Поиск в массиве, поиск элементов с идентификаторами, указанными в другом массиве, извлечение свойства из результатов - PullRequest
1 голос
/ 14 апреля 2020

У меня есть два массива:

array1 = [{name: "a", id: 1},{name: "b", id: 2},{name: "c", id: 3}]

и

array2 = [1, 2] // --which are the ids

Я хочу вернуть новый массив (array3) для отображения ["a", "b"], а если array2 = [1,3], то array3 должен be ["a", "c"]

Другими словами, я хотел бы создать новый массив с names, соответствующим его id.

Ответы [ 3 ]

1 голос
/ 14 апреля 2020

Вы можете использовать уменьшить :

let a1 = [{name:'a', id:1},{name:'b', id:2},{name:'c', id:3}]
let a2 = [1,3]

let a3 = a1.reduce((carry, current) => {
    if (a2.includes(current.id)) {
        carry.push(current.name)
    }
    
    return carry
}, [])

alert(a3)
1 голос
/ 14 апреля 2020

Я бы go опередил и выполнил следующее:

for(int i = 0; i<array1.length(); ++i){
  for(int j = 0; j<array2.length(); ++j){
    if (array1[i].id==array2[j]){
      array3[j] = array[i].name;
    }
  }
}

Надеюсь, это просто и помогает!

1 голос
/ 14 апреля 2020

Пользователь filter, чтобы выбрать элементы, которые соответствуют вашим критериям, и map, чтобы получить желаемую недвижимость.

const array1 = [{name:"a", id:1},{name:"b", id:2},{name:"c", id:3}];
const array2=[1,2];
const array3 = array1.filter(i => array2.includes(i.id)).map(i => i.name);

array3 будет содержать ["a", "b"]

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