📜  js 删除 json 重复值 - Javascript (1)

📅  最后修改于: 2023-12-03 14:43:30.861000             🧑  作者: Mango

JS 删除 JSON 重复值

在前后端开发中,JSON(JavaScript Object Notation)作为轻量级数据交换格式,被广泛应用于通信过程中。然而,在实际应用中,我们常常需要对 JSON 数据进行去重操作。本文将介绍如何使用 JavaScript 删除 JSON 中的重复值。

1. 方法一:使用 Set 对象

Set 对象是 ES6 新增的数据结构,它允许你存储任何类型的唯一值。我们可以利用这一特性,快速地将 JSON 数组去重。

const jsonArr = [
  { name: 'Tom', age: 20 },
  { name: 'John', age: 30 },
  { name: 'Tom', age: 20 },
  { name: 'Mike', age: 25 }
];

const set = new Set(jsonArr.map(item => JSON.stringify(item)));
const uniqueArr = [...set].map(item => JSON.parse(item));

console.log(uniqueArr); // [{ name: 'Tom', age: 20 }, { name: 'John', age: 30 }, { name: 'Mike', age: 25 }]

以上代码中,我们首先使用 map() 方法将 JSON 数组中的每个元素进行字符串化,然后再将其存入 Set 对象中。Set 对象会自动去重,最后我们再将 Set 对象转为数组,并使用 map() 方法将每个元素字符串转回为 JSON 对象。

2. 方法二:使用 filter() 方法

上一种方法虽然简洁明了,但是运用了 ES6 的新特性,不一定适用于所有环境。下面我们介绍一种不依赖于新特性的方法,利用 filter() 方法去重。

const jsonArr = [
  { name: 'Tom', age: 20 },
  { name: 'John', age: 30 },
  { name: 'Tom', age: 20 },
  { name: 'Mike', age: 25 }
];

const result = jsonArr.filter((item, index, arr) => {
  const tmp = JSON.stringify(item);
  return arr.slice(0, index).every(prev => {
    return JSON.stringify(prev) !== tmp;
  });
});

console.log(result); // [{ name: 'Tom', age: 20 }, { name: 'John', age: 30 }, { name: 'Mike', age: 25 }]

以上代码中,我们使用 filter() 方法遍历整个 JSON 数组,将每个元素和之前的元素进行比较。如果和前面的元素不重复,就将该元素保留下来。通过这种方式,最终得到一个去重后的 JSON 数组。

总结

本文我们介绍了两种实现方式来删除 JSON 中的重复值,它们分别是使用 Set 对象和 filter() 方法。这些方法都简单易懂,可以让你快速地对 JSON 进行去重操作。