возвращает значение соответствующих элементов в массиве

#javascript #arrays #filter #find

Вопрос:

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

Взяв переменную » id «в качестве ссылки, я хочу вернуть все соответствующие значения fastFood, но только «имя».

Мой ожидаемый результат-вернуть пять парней и KFC, но вместо этого он возвращает весь объект.

 let id = ['1234']; let fastFood = [  {_id:'4391', name: "McDonalds"},   {_id:'7654', name: "Burger King"},   {_id:'8765', name: "Dominos"},   {_id:'1234', name: "Five Guys"},   {_id:'9876', name: "Subway"},   {_id:'1234', name: "KFC"} ];   const findFastFood = ids.filter((item) =gt; {  if (item._id.indexOf(id) !== -1) {  return item.name;  } });  console.log(findFastFood);  

Комментарии:

1. Может id ли массив содержать несколько записей?

2. Там нет массива с именем ids . Array.prototype.filter() должен возвращать логическое значение ( true или false ) для каждого элемента.

3. Нет ничего подобного ids

4. И почему .indexOf() для удостоверения личности?

5. item._id === id[0] сделал бы эту работу

Ответ №1:

Помогает ли это?

 let id = ['1234']; let fastFood = [{  _id: '4391',  name: "McDonalds"  },  {  _id: '7654',  name: "Burger King"  },  {  _id: '8765',  name: "Dominos"  },  {  _id: '1234',  name: "Five Guys"  },  {  _id: '9876',  name: "Subway"  },  {  _id: '1234',  name: "KFC"  } ];   const findFastFood = fastFood.filter((item) =gt; {  if (id.indexOf(item._id) !== -1) {  return item.name  }  }).map(obj =gt; obj.name);   console.log(findFastFood);