You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Array Filter失效问题(附可运行代码片段)

问题分析与解决

你的代码没达到预期效果的核心原因是:filter方法不会修改原数组,它仅返回一个过滤后的新数组,你当前只是调用了filter但没有把返回结果重新赋值给elem.cars,所以原数组的cars属性完全没变化。

修正后的代码

要保留原有数据结构并删除id为48的车辆,只需将filter返回的新数组赋值回elem.cars即可:

const numbers = [49, 482, 49, 49, 49, 1135, 49, 1709, 1044, 1016, 30];

const array = [{
  cars: [{
    id: 48
  }, {
    id: 49
  }]
}];

// 将filter的结果赋值回原cars属性,完成替换
array.forEach(elem => {
  elem.cars = elem.cars.filter(car => numbers.includes(car.id));
});

console.log(array);

性能优化建议

如果numbers数组很大,推荐把它转换成Set,因为Set.has()的查询效率是O(1),比数组的includes()(O(n))更高:

const numberSet = new Set(numbers);
array.forEach(elem => {
  elem.cars = elem.cars.filter(car => numberSet.has(car.id));
});

内容的提问来源于stack exchange,提问作者Tiago Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:43:12