这里是说明:
假装没有 Array.filter() 方法。使用 Array.reduce() 仅从提供的数组中过滤掉 price 属性为 10 或以上的对象。
假设没有 Array.filter() 方法,只有 Array.reduce()。 您将如何使用 Array.reduce() 来模仿 filter 方法,从而 从下面的数组中,您可以创建一个仅由对象组成的新数组 来自包含 10 及以上价格属性的原始数组? 部分代码已经为您完成。 通过取消注释第 36 行的 return 语句来完成其余部分 并编写当 cur.price >= 10 时返回什么的代码。
这就是预期的输出:
这是我目前所拥有的:
const gems = [
{ type: 'amethyst', price: 8 },
{ type: 'turquoise', price: 50 },
{ type: 'selenite', price: 2 },
{ type: 'topaz', price: 10 },
{ type: 'emerald', price: 500 }
]
const gemsOverTen = gems.reduce((acc, cur) => {
if (cur.price < 10) return acc;
if (cur.price >= 10) {
return {
...acc,
"type": cur.type, "price": cur.price
}};
}, []);
console.log(gemsOverTen);
这也是我的codepen:
const gems = [
{ type: 'amethyst', price: 8 },
{ type: 'turquoise', price: 50 },
{ type: 'selenite', price: 2 },
{ type: 'topaz', price: 10 },
{ type: 'emerald', price: 500 }
]
const gemsOverTen = gems.reduce((acc, cur) => {
if (cur.price < 10) return acc;
return [
...acc,
{
"type": cur.type,
"price": cur.price
}
];
}, []);
console.log(gemsOverTen);
如果您不需要新副本:
const gems = [
{ type: 'amethyst', price: 8 },
{ type: 'turquoise', price: 50 },
{ type: 'selenite', price: 2 },
{ type: 'topaz', price: 10 },
{ type: 'emerald', price: 500 }
]
const gemsOverTen = gems.reduce((acc, cur) => {
if (cur.price < 10) return acc;
return [
...acc,
cur
];
}, []);
console.log(gemsOverTen);
或者只使用推送
const gems = [
{ type: 'amethyst', price: 8 },
{ type: 'turquoise', price: 50 },
{ type: 'selenite', price: 2 },
{ type: 'topaz', price: 10 },
{ type: 'emerald', price: 500 }
]
const gemsOverTen = gems.reduce((acc, cur) => {
if (cur.price >= 10) acc.push(cur);
return acc;
}, []);
console.log(gemsOverTen);