先用 filter() 保留符合条件的对象,再用 map() 提取需要的字段。前一个回调返回布尔判断,后一个回调返回要放进新数组的值。

筛出已上架且缺货的商品
在浏览器控制台运行。
const products = [
{ id: 1, name: "笔记本", stock: 0, status: "active" },
{ id: 2, name: "文件夹", stock: 5, status: "active" },
{ id: 3, name: "胶带", stock: 0, status: "inactive" },
];
const soldOut = products
.filter(product => product.stock === 0 && product.status === "active")
.map(product => product.name);
这里用严格比较区分零库存和其他值。结果只包含名称。
立即学习“Java免费学习笔记(深入)”;
用断言检查结果和源数组
追加下列检查。
console.assert(JSON.stringify(soldOut) === '["笔记本"]'); console.assert(products.length === 3);
两个方法会返回新数组。回调里直接修改对象属性仍可能影响源对象。
仅执行副作用时用 forEach
如果需求只是逐项打印,可以直接遍历结果。
soldOut.forEach(name => console.log(name));
forEach 的返回值是 undefined。需要供后续使用的数组时保留 filter 和 map 的结果。


















