JavaScript实现:列表项存在于指定数组时将对应布尔值设为true
实现方法
你可以按以下步骤完成逻辑处理:
- 先将库存列表转为
Set结构,相比数组的includes方法,Set的has方法查找效率更高,适合做存在性校验 - 遍历第一个列表的所有项,列表中非数组类型的顶层布尔值直接保留,不需要修改
- 遇到数组类型的子项时,取子项的第一个元素和库存列表做匹配:如果匹配成功,将子项的第二个值改为
true;匹配失败则保留原有的false值
代码实现
// 原始数据 const list1 = [ true, ['keyToOffice', false], false ] const list2 = [ { reference: 'keyToOffice', // 其余无关业务字段 }, { reference: 'keyToHouse', // 其余无关业务字段 } ] const inventory = [ 'keyToOffice' ] // 核心处理逻辑 const inventorySet = new Set(inventory) const result = list1.map(item => { // 非数组项直接返回原值 if (!Array.isArray(item)) return item const [targetKey, originVal] = item // 命中库存则更新为true,否则保留原值 return [targetKey, inventorySet.has(targetKey) ? true : originVal] })
运行结果
执行上述代码后,result的值为:
[ true, ['keyToOffice', true], false ]
和预期一致:keyToOffice存在于库存列表中,对应子数组的第二个值从false更新为true,其余项均保持原有值不变。
注:你给出的第二个列表在当前描述的逻辑中没有用到,若后续需要基于第二个列表做关联处理,可以基于现有逻辑扩展。
内容的提问来源于stack exchange,提问作者Jack Snowdon
相关产品推荐
相关产品推荐

