Как попасть в объект, который находится в массиве - PullRequest
0 голосов
/ 30 августа 2018

Допустим, у меня есть такой массив:

arrayOfObject = [{item: {this: is,  that: is}}, {item2: {this: is, that: is}}]

Я пытаюсь получить доступ к item и item2 без использования индекса 0/1. Я хотел бы иметь возможность говорить arrayOfObjects [item], чтобы попасть в объект. Возможно ли это?

Ответы [ 4 ]

0 голосов
/ 30 августа 2018

Вы не можете сделать именно это, но что-то похожее, когда вы «конвертируете» свой массив в объект и затем используете ключи для доступа к значениям:

arrayOfObject = [{ item: { this: "a", that: "b" } }, { item2: { this: "c", that: "d" } }]

const arrayToObject = arrayOfObject.reduce((r,c) => Object.assign(r,c), {})

console.log(arrayToObject['item'])
console.log(arrayToObject['item2'])

В приведенном выше фрагменте мы конвертируем arrayOfObject в массив В Object, а затем просто получаем доступ к значениям с помощью клавиш.

В противном случае то, что вы пытаетесь сделать, невозможно, поскольку вы можете получить доступ к значениям из массива только по индексу или с помощью какой-либо функции, которая будет проходить через него и получать вам запись, например, find и т. Д.

0 голосов
/ 30 августа 2018

Да, конечно, это возможно:

var result = arrayOfObject.map(a => a.item);

или

var result = arrayOfObject.map(a => a.item2);
0 голосов
/ 30 августа 2018

var arrayOfObject = [{
    "item": {
        "this": "is",
        "that": "is"
    }
}, {
    "item2": {
        "this": "is",
        "that": "is"
    }
}];

var itemObject = {};
arrayOfObject.forEach(function(value) {
    var filterObject = Object.keys(value).filter(val => val.indexOf("item") != -1);
    if (filterObject.length > 0) {
        filterObject.forEach(key => {
            itemObject[key] = itemObject[key] || [];
            itemObject[key].push(value[filterObject[0]]);
        });
    }
});

console.log(itemObject.item); //item
console.log(itemObject.item2); //item
0 голосов
/ 30 августа 2018

Вы можете использовать Array.find.

arrayOfObject = [{
  item: {
    this: 'is',
    that: 'is'
  }
}, {
  item2: {
    this: 'is',
    that: 'is'
  }
}]

console.log(arrayOfObject.find(ob => ob['item']));
console.log(arrayOfObject.find(ob => ob['item2']));
...