如何判断JSON中cm:taggable数组的ID是否存在于指定数组?
检查cm:taggable数组中的ID是否存在于自定义数组中
情况1:cm:taggable是纯ID数组
如果JSON数据里cm:taggable直接存储的是ID值数组,可直接用数组includes方法检查:
// 解析后的JSON对象 const jsonData = { "entry": { "properties": { "cm:taggable": [101, 102, 103, 104] } } }; // 自定义对比数组 const secondArray = [102, 104, 105]; // 提取目标数组 const taggableIds = jsonData.entry.properties['cm:taggable']; // 遍历检查每个ID taggableIds.forEach(id => { const isExists = secondArray.includes(id); console.log(`ID ${id} 在secondArray中: ${isExists}`); });
情况2:cm:taggable是包含ID的对象数组
如果cm:taggable是对象数组(每个对象含id字段),建议先把自定义数组转成Set提升查找效率(数据量大时效果显著):
const jsonData = { "entry": { "properties": { "cm:taggable": [ {"id": 101, "name": "标签1"}, {"id": 102, "name": "标签2"}, {"id": 103, "name": "标签3"} ] } } }; const secondArray = [102, 104]; // 转成Set优化查找 const targetIdSet = new Set(secondArray); const taggableItems = jsonData.entry.properties['cm:taggable']; // 遍历检查每个对象的ID taggableItems.forEach(item => { const isExists = targetIdSet.has(item.id); console.log(`ID ${item.id} 在secondArray中: ${isExists}`); });
补充说明
- 若需收集所有存在/不存在的ID,可使用
filter方法:// 收集存在的ID const existingIds = taggableIds.filter(id => secondArray.includes(id)); // 收集不存在的ID const nonExistingIds = taggableIds.filter(id => !secondArray.includes(id)); - 数据量较大时,
Set的has方法比数组includes性能更高,前者为O(1)时间复杂度,后者为O(n)。
内容的提问来源于stack exchange,提问作者Flashman
相关产品推荐
相关产品推荐

