получить объект из массива по имени ключа - PullRequest
0 голосов
/ 14 января 2019

Я хочу получить объект из массива по имени ключа.

Массив:

let input = [
    id1: {},
    id2: {},
    id3: {},
]

console.log(input);

А мне нужен только объект с ключом id2. Как я могу отфильтровать объект из массива?

Ответы [ 3 ]

0 голосов
/ 14 января 2019

Массивы имеют только числовые индексы.

Если вам нужен только один элемент массива и вы знаете индекс:

var myArray = [{a: 'a'}, {b: 'b'}]
var iWantedIndex = 1;
var myObject = {};
myObject[iWantedIndex] = myArray[iWantedIndex];

Если вам нужны более сложные проверки или более одного элемента из массива, вы можете использовать Array.prototype.forEach или классический цикл for .

0 голосов
/ 14 января 2019

Прежде всего, это не допустимый объект JS или строка JSON.

Если это объект, его следует определить следующим образом.

{
    "id1": {
        "some": "property"
    },
    "id2": {
        "some": "property"
    },
    "id3": {
        "some": "property"
    }
}

Давайте назовем это parentObject.

В этом случае вы можете получить доступ к нужному объекту просто по свойству.

parentObject.id2 
or
parentObject['id2']

Если это массив, его следует определить следующим образом.

  [{
        "id1": {
            "some": "property"
        }
    },
    {
        "id2": {
            "some": "property"
        }
    },
    {
        "id3": {
            "some": "property"
        }
    }
  ]

Давайте назовем это parentArray. И вы можете найти его, используя следующий код, например

var targetObject= parentArray.find(x => x.id2 !== undefined);

Будет возвращено первое совпадение, если оно существует.

0 голосов
/ 14 января 2019

Как сказал @ritaj, в предоставленном вами коде, который имел недопустимый синтаксис, я собираюсь предположить, что вы хотите реализовать нечто подобное, используя функцию find. Однако, если вы хотите найти несколько объектов, вы всегда можете использовать функцию filter, как вы можете видеть во втором примере, она возвращает массив, содержащий оба объекта со свойством id2 и id3.

var array = [
  {id1: {}},
  {id2: {}},
  {id3: {}},
];

console.log(array.find(({id2}) => id2));

var array = [
  {id1: {}},
  {id2: {}},
  {id3: {}},
];

console.log(array.filter(({id2, id3}) => id3 || id2));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...