JavaScript:通过嵌套数组查找修改对象的简洁实现方案
简洁健壮的单行解决方案
嘿,这就给你安排一个既简洁又高效的单行代码方案,还兼顾了性能哦!
核心思路
- 先把
kids.extra.hobbies里的所有id提取出来,存成一个Set(用Set的好处是查找速度快,时间复杂度O(1),比数组的includes高效太多,数据量大的时候优势明显) - 遍历
sports数组,对每一项扩展available属性,判断其name是否在刚才的Set里
单行实现代码
const result = sports.map(s => ({ ...s, available: new Set(kids.extra.hobbies.map(h => h.id)).has(s.name) }));
效果验证
执行后result的结构会是:
[ { name: 'volleyball', coach: 'tom', available: false }, { name: 'waterpolo', coach: 'jack', available: false }, { name: 'swimming', coach: 'kate', available: false }, { name: 'football', coach: 'sara', available: true } ]
额外说明
- 这个方案是纯函数式的,不会修改原有的
sports数组和kids对象,避免了副作用 - 用
Set替代数组查找,让代码在数据量较大时依然保持良好性能,比直接用kids.extra.hobbies.some(h => h.id === s.name)或者includes更健壮
内容的提问来源于stack exchange,提问作者moaningalways
相关产品推荐
相关产品推荐

