Функция должна вернуть массив всех значений свойства с одинаковым именем из каждого объекта в массиве
Функция должна вернуть массив всех значений свойства с таким именем из каждого объекта в массиве products. Что то напутал в цикле for...of. Выводится только пустой массив.
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) {
let arrValue = [];
for (const product of products) {
if (propName === product.propName) {
return arrValue.push(propName);
}
}
return arrValue;
}
Ответы (2 шт):
Автор решения: Александр Сычёв
→ Ссылка
if (propName === product.propName)
так не получится, так как в product.propName будет undefined. Даже если так product[propName] вы получите значение, а не сам ключ по которому сравниваете
вот такое решение в лоб:
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
},
];
console.log(getAllPropValues('name'))
function getAllPropValues(propName) {
let arrValue = [];
for (const product of products) {
for (const obj in product) {
if (obj == propName) {
arrValue.push(product[obj])
}
}
}
return arrValue
}
Или такой вариант (без вложенного перебора):
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
},
];
console.log(getAllPropValues2('price'))
function getAllPropValues2(propName) {
let a = []
for (const product of products) {
if (Object.keys(product).includes(propName)) {
a.push(product[propName])
}
}
return a
}
Автор решения: EzioMercer
→ Ссылка
Если я всё правильно понял, то вам просто нужно использовать метод map и не нужно никаких проверок:
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
},
];
const getAllPropValues = (propName) => products.map(product => product[propName]);
console.log(getAllPropValues('name'));
console.log(getAllPropValues('price'));
console.log(getAllPropValues('quantity'));
P.S. Если указанного свойства не будет в объекте, то вставится undefined в массив