Задача. Коллекция значений свойства
Что неправильно?
Задача:
Напиши функцию 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 prodName = [];
const prodQuantity = [];
const prodPrice = [];
const prodCategory = [];
for (const product of products) {
prodName.push(product.name);
prodQuantity.push(product.quantity);
prodQuantity.push(product.price);
prodQuantity.push(product.category);
}
return prodName;
return prodQuantity;
return prodPrice;
return prodCategory;
}
Ответы (1 шт):
Автор решения: HaZcker
→ Ссылка
У вас функция неправильно написана.
Во первых вы обновляете только prodName и prodQuantity
for (const product of products) {
prodName.push(product.name);
prodQuantity.push(product.quantity);
prodQuantity.push(product.price);
prodQuantity.push(product.category);
}
Во вторых, когда функция натыкается на return, она завершает своё выполнение. Всё что ниже return-a не имеет смысла.
Вот исправленный вариант вашей функции:
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 prodName = [];
const prodQuantity = [];
const prodPrice = [];
const prodCategory = [];
for (const product of products) {
prodName.push(product.name);
prodQuantity.push(product.quantity);
prodPrice.push(product.price);
prodCategory.push(product.category);
}
switch(propName) {
case 'name':
return prodName;
case 'quantity':
return prodQuantity;
case 'price':
return prodPrice;
case 'category':
return prodCategory;
}
}
const prices = getAllPropValues('price')
console.log(prices)
UPD Либо вот, немножко изменённая версия функции:
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 availableProps = ['name', 'price', 'quantity']
if (availableProps.includes(propName)) {
return products.map((item) => item[propName])
}
}
const prices = getAllPropValues('price')
console.log(prices)