js写一个数组对象去重
时间: 2023-05-17 08:07:19 浏览: 120
var arr = [{name: 'Tom', age: 18}, {name: 'John', age: 20}, {name: 'Tom', age: 18}];
var result = arr.reduce(function (unique, item) {
var key = item.name + '_' + item.age;
if (!unique[key]) {
unique[key] = item;
}
return unique;
}, {});
var newArr = Object.values(result);
console.log(newArr);
相关问题
帮我用js写一段数组对象去重的方法
当然可以!以下是一段用 JavaScript 实现数组对象去重的方法:
```javascript
function uniqueArrayObjects(arr) {
const seen = new Set();
return arr.filter(item => {
const serialized = JSON.stringify(item);
if (seen.has(serialized)) {
return false;
}
seen.add(serialized);
return true;
});
}
```
这个方法会接受一个数组对象作为参数,然后返回一个去重后的新数组对象。它的原理是使用了 ES6 中的 Set 数据结构来存储已经出现过的对象,然后通过 JSON.stringify 将每个对象序列化成字符串来进行比较。如果已经出现过,就过滤掉,否则就加入 Set 中并保留在新数组对象中。
js用一个数组对象对另一个数组对象去重
你可以使用 `Array.filter()` 方法来实现对一个数组对象去重,以下是一个示例代码:
```javascript
let array1 = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 3, name: 'John' }
];
let array2 = [
{ id: 4, name: 'John' },
{ id: 5, name: 'Jane' },
{ id: 6, name: 'Mary' }
];
let uniqueArray = array1.filter(obj1 => !array2.some(obj2 => obj1.id === obj2.id && obj1.name === obj2.name));
console.log(uniqueArray);
```
在上面的例子中,`array1` 和 `array2` 是两个数组对象,你想要从 `array1` 中去除与 `array2` 中重复的元素。使用 `Array.filter()` 方法对 `array1` 进行筛选,通过使用 `Array.some()` 方法来判断元素是否存在于 `array2` 中。如果元素不存在于 `array2` 中,则保留在 `uniqueArray` 中。
这样,`uniqueArray` 将会是一个仅包含 `array1` 中独有的元素的数组对象。
阅读全文