Задача. Коллекция значений свойства (автопроверки)
Задача из автопроверок. Напиши функцию getAllPropValues(propName) которая принимает один параметр propName - имя (ключ) свойства. Функция должна вернуть массив всех значений свойства с таким именем из каждого объекта в массиве products. Если в объектах нет свойства с таким именем, функция должна вернуть пустой массив.
Вот мой код:
const products = [
{ name: "Radar", price: 1300, quantity: 4 },
{ name: "Scanner", price: 2700, quantity: 3 },
{ name: "Droid", price: 400, quantity: 7 },
{ name: "Grip", price: 1200, quantity: 9 },
];
function getAllPropValues(propName) {
const keys = Object.values(products);
for(const key of keys){
if(products.key === keys){
propName.push(key)
}
return propName;
}
return [];
}
getAllPropValues("name");
getAllPropValues("quantity");
getAllPropValues("price");
getAllPropValues("category");
На вот эти пункты проверка ругается:
Ваш код слишком долго исполняется
right answer
Вызов getAllPropValues('quantity') возвращает [4, 3, 7, 9]
right answer
Вызов getAllPropValues('price') возвращает [1300, 2700, 400, 1200]
right answer
Вызов getAllPropValues('category') возвращает []
Подсакажите, пожалуйста...
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Вам не надо перебирать все ключи объекта, достаточно проверить наличие ключа в объекте. И products у вас это массив, который состоит из объектов.
Поэтому надо делать вот так:
function getAllPropValues(propName) {
const res = []; // Объявляем массив с результатами
products.forEach((item) => { // Бежим по массиву данных
if (item.hasOwnProperty(propName)) { // Проверяем у элемента наличие ключа
res.push(item[propName]) // Если есть добавляем к результату
}
})
return res; // Отдаем ответ
}