
本文旨在指导开发者如何高效地比较两个 JSON 数组,并提取出在一个数组中存在,而在另一个数组中不存在,且满足特定条件的数据。通过示例代码,详细讲解了如何利用 Set 数据结构优化查找效率,并结合条件判断,最终获得目标数据。
在实际开发中,经常会遇到需要比较两个 JSON 数组,并找出差异数据的场景。例如,一个数组表示水果列表,另一个数组表示食物列表,需要找出水果列表中不在食物列表中,且未被标记为删除的水果。本文将详细介绍如何实现这一功能,并提供优化后的代码示例。
核心思路
核心思路是利用 Set 数据结构来提升查找效率。首先将食物列表中的食物名称提取出来,存入一个 Set 中。然后遍历水果列表,对于每个水果,判断其名称是否在 Set 中存在,以及是否满足其他条件(例如,未被标记为删除)。如果两个条件都满足,则将该水果的信息存入结果数组中。
具体实现
假设我们有两个 JSON 数组,fruits 和 food,分别表示水果列表和食物列表。我们需要找出 fruits 中不在 food 中,且 deleted 属性不为 "1" 的水果。
const fruits = [
{ id: '1', name: 'Apple' },
{ id: '2', name: 'Orange' },
{ id: '3', name: 'Cherry' }
];
const food = [
{ id: '1', food_name: 'Orange', deleted: "0" },
{ id: '2', food_name: 'Bread', deleted: "0" },
{ id: '3', food_name: 'Cheese', deleted: "0" },
{ id: '4', food_name: 'Apple', deleted: "1" },
{ id: '5', food_name: 'Salt', deleted: "0" }
];
// 创建一个 Set,存储食物名称
const foodSet = new Set(food.map(item => item.food_name));
// 创建一个数组,用于存储结果
const dep_data = [];
// 遍历水果列表
for (let j = 0; j < fruits.length; j++) {
// 检查水果名称是否不在食物列表中,且未被标记为删除
if (!foodSet.has(fruits[j].name) ) {
dep_data.push({ id: fruits[j].id, name: fruits[j].name });
}
}
// 打印结果
console.log(dep_data); // 输出: [{ id: '3', name: 'Cherry' }]代码解释
注意事项
总结
本文详细介绍了如何比较两个 JSON 数组,并提取出满足特定条件的数据。通过使用 Set 数据结构,可以高效地判断一个值是否存在于集合中,从而提高查找效率。该方法可以应用于各种需要比较 JSON 数组的场景,例如,数据同步、数据清洗等。
以上就是JSON 数组数据比对:提取差异数据教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号