Доступ к значениям свойств объекта в массиве - JavaScript - PullRequest
3 голосов
/ 30 мая 2019

Обучение доступу к значениям свойств.

Если у меня есть

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

Как бы я console.log просто значение второго объекта? То есть "разработчик сайта".

Я знаю, как console.log всей пары ключ-значение (или объект), используя .find():

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1.find(function(element) {
    return element.hasOwnProperty("job");
}
));

А как насчет значения этой пары?

Ответы [ 6 ]

3 голосов
/ 30 мая 2019

Вы можете получить доступ к элементам в массивах в заданной позиции по их индексу. В javascript индексы массивов начинаются с 0: myArray[0]. Чтобы получить доступ к свойству возвращаемого объекта, просто используйте точку-нотацию: myArray[0].myProperty.

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1[1].job);

Для вашего данного примера это также может быть достигнуто путем добавления имени свойства (с точечной нотацией):

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1.find(function(element) {
    return element.hasOwnProperty("job");
}).job);
2 голосов
/ 30 мая 2019

Вы можете деструктурировать значение:

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
const { job: res } = object1.find(({ job }) => job);
console.log(res);
1 голос
/ 04 июня 2019

Если структура объекта в массиве одинакова, вы можете сгладить этот массив объектов, подобных этому, и вызвать его непосредственно как ключи объекта.

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
let flatten = {}
object1.map((currentValue, index) => {
  let key = Object.keys(currentValue)  
  flatten[key] = currentValue[key]
});
console.log(flatten)
console.log(flatten.job)
1 голос
/ 30 мая 2019

Во-первых, ваш object1 - это массив объектов, а не объект.

Хотя есть способ достичь того, чего вы хотите.

const fun = (arr, prop) => arr.find((obj) => obj.hasOwnProperty(prop))[prop];

const object1 = [{name: 'HappyHands31'}, {job: 'website developer'}, {city: 'Chicago'}];

const property = 'job';

console.log(fun(object1, property));
1 голос
/ 30 мая 2019

Просто добавьте в конец доступ к свойству.

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1.find(function(element) {
    return element.hasOwnProperty("job");
}).job);
1 голос
/ 30 мая 2019

Решением было бы хранить где-нибудь ключи каждого объекта и затем обращаться к объекту обычным способом.

    let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
    
    for(let i=0; i<3; i++){
       name = Object.keys(object1[i]);
       console.log(object1[i][name])
    }

В этом случае я предположил, что вы не знаете название ключа, к которому хотите получить доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...