JavaScript对象数组交集匹配:为元素添加check字段
解决layers与perms数组匹配并添加check字段的问题
需求概述
给定包含layers和perms两个对象数组的response对象,需为layers中每个元素添加check字段:
- 若
layers元素的layer键值与perms中任意元素的layer键值相同,check: true - 否则
check: false
高效实现方案
利用Set存储perms中的layer值(查找复杂度O(1)),结合map遍历layers完成字段添加,比多次遍历数组的方式更高效。
代码示例
// 模拟原始response数据 const response = { layers: [ { layer: 'layer1', name: '图层1' }, { layer: 'layer2', name: '图层2' }, { layer: 'layer3', name: '图层3' } ], perms: [ { layer: 'layer1', permission: 'edit' }, { layer: 'layer3', permission: 'view' } ] }; // 提取perms中的layer值存入Set const permLayerSet = new Set(response.perms.map(item => item.layer)); // 为layers数组元素添加check字段 response.layers = response.layers.map(layer => ({ ...layer, check: permLayerSet.has(layer.layer) }));
输出结果
处理后的response.layers如下:
[ { layer: 'layer1', name: '图层1', check: true }, { layer: 'layer2', name: '图层2', check: false }, { layer: 'layer3', name: '图层3', check: true } ]
内容的提问来源于stack exchange,提问作者Angels
相关产品推荐
相关产品推荐

