#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);