vue json数组去重
时间: 2023-06-23 22:01:16 浏览: 138
您可以使用 JavaScript 中的 Set 对象来实现数组去重,以下是一个例子:
```javascript
let jsonData = [{id: 1, name: 'John'}, {id: 2, name: 'Doe'}, {id: 1, name: 'John'}];
let uniqueData = Array.from(new Set(jsonData.map(JSON.stringify))).map(JSON.parse);
console.log(uniqueData);
// 输出: [{id: 1, name: 'John'}, {id: 2, name: 'Doe'}]
```
在上面的例子中,我们首先将 JSON 对象转换为字符串,然后使用 Set 对象去除重复项,最后将字符串转换回 JSON 对象。
相关问题
vueJSON数组去重
在Vue中,可以使用JavaScript的方法对JSON数组进行去重。以下是一种常见的方法:
1. 使用Set数据结构:Set是ES6中的一种数据结构,它可以存储唯一的值。我们可以利用Set的特性来实现数组去重。
```javascript
let jsonArray = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArray = Array.from(new Set(jsonArray.map(JSON.stringify))).map(JSON.parse);
console.log(uniqueArray);
```
上述代码中,我们首先使用`map`方法将JSON对象转换为字符串,然后利用Set的特性去除重复的字符串,再通过`map`方法将字符串转换回JSON对象,最终得到去重后的数组。
2. 使用reduce方法:reduce方法可以对数组进行迭代操作,并返回一个累加结果。我们可以利用reduce方法来实现数组去重。
```javascript
let jsonArray = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArray = jsonArray.reduce((acc, cur) => {
let isExist = acc.find(item => item.id === cur.id);
if (!isExist) {
acc.push(cur);
}
return acc;
}, []);
console.log(uniqueArray);
```
上述代码中,我们使用reduce方法对数组进行迭代操作,通过判断当前元素是否已存在于累加结果中,来决定是否将当前元素添加到累加结果中,从而实现数组去重。
这两种方法都可以在Vue中使用,根据实际情况选择适合的方法进行数组去重。
vue3数组去重
### Vue3 中数组去重方法
在 Vue3 的开发过程中,对于普通的数值型或字符串类型的数组,可以采用 `new Set()` 方法快速完成去重操作。而对于对象数组,则需要通过更复杂的逻辑来实现去重。
#### 1. 普通数组去重
以下是针对普通数组的去重示例:
```javascript
const numbers = [1, 2, 3, 4, 5, 1, 2];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // 输出: [1, 2, 3, 4, 5]
```
上述代码利用了 ES6 提供的 `Set` 数据结构自动过滤重复项的功能[^1]。
#### 2. 对象数组去重
当面对的是对象数组时,由于对象本身无法直接被 `Set` 判断唯一性,因此需要借助其他方式实现去重。以下是一个基于特定键值(如 `id`)的对象数组去重示例:
```javascript
const items = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Charlie' }
];
// 使用 Map 来辅助判断唯一性
const map = new Map();
items.forEach(item => {
if (!map.has(item.id)) {
map.set(item.id, item);
}
});
const uniqueItems = Array.from(map.values());
console.log(uniqueItems);
/* 输出:
[
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' }
]
*/
```
此代码片段展示了如何通过 `Map` 结构保存唯一的键值对,并最终将其转换回数组形式[^2]。
#### 3. 自定义条件下的对象数组去重
如果希望按照自定义规则(而非单一字段)来进行对象数组去重,可以通过 JSON 字符串化的方式实现:
```javascript
function getUniqueObjects(array) {
const seenStrings = new Set();
return array.filter(obj => {
const strObj = JSON.stringify(obj);
if (seenStrings.has(strObj)) {
return false;
} else {
seenStrings.add(strObj);
return true;
}
});
}
const objects = [
{ a: 1, b: 2 },
{ a: 2, b: 3 },
{ a: 1, b: 2 }
];
const uniqueObjects = getUniqueObjects(objects);
console.log(uniqueObjects);
/* 输出:
[
{ a: 1, b: 2 },
{ a: 2, b: 3 }
]
*/
```
这种方法适用于较为简单的对象结构,但对于嵌套较深或者含有循环引用的情况可能不适用。
---
阅读全文
相关推荐













