js 数组将相同的数据去重保留最新的一条方法
时间: 2024-05-05 20:18:52 浏览: 61
您好,关于您的问题,可以使用以下代码实现相同数据的去重并保留最新的一条:
```javascript
function uniqueArray(arr) {
var obj = {};
var result = [];
for (var i = 0; i < arr.length; i++) {
obj[arr[i].id] = arr[i];
}
for (var key in obj) {
result.push(obj[key]);
}
return result;
}
```
此代码通过对象的key作为标识,将相同数据去重并保留最新的一条数据存入数组result中。希望能解决您的问题。
相关问题
数组要是orderGroupId相同保留一条数据,去重vue
在Vue.js中,如果你想对数组里的对象按照`orderGroupId`字段进行去重,并保留每个`orderGroupId`下的第一条数据,你可以这样做:
1. 首先,创建一个新的空数组`result`用于存放去重后的结果。
2. 使用`Array.prototype.reduce()`方法遍历原数组,将每个`orderGroupId`对应的对象存储在一个对象中作为键值对。如果遇到相同的`orderGroupId`,则检查当前键值对是否存在,若不存在,则添加;存在的话,就不做处理,因为我们要保留的是第一条记录。
```javascript
let data = [
{ orderGroupId: '1', ... },
{ orderGroupId: '1', ... },
{ orderGroupId: '2', ... },
// 更多对象...
];
let result = data.reduce((acc, cur) => {
if (!acc[cur.orderGroupId]) {
acc[cur.orderGroupId] = cur;
}
return acc;
}, {});
// 现在result就是按照orderGroupId去重并保留第一条数据的结果
```
3. 如果你想获取最终的数组形式,可以再通过`Object.values()`将键值对转换为数组。
```javascript
let uniqueData = Object.values(result);
```
js 数组如果id相同就删除这条数据,返回剩下的数据
在JavaScript中,如果你有一个数组,并希望根据某个字段(比如'id')删除重复的数据,你可以使用`filter()`函数配合`reduce()`或`Set`来实现这个功能。这里是一个基本的例子:
```javascript
function removeDuplicatesById(arr, key) {
// 使用Set存储唯一的id
const uniqueIds = new Set();
// 使用filter()遍历数组,如果id不在Set中,则保留该元素
return arr.filter(item => !uniqueIds.has(item[key]) && (uniqueIds.add(item[key])));
}
// 示例数据
const data = [
{ id: '1', name: 'Alice' },
{ id: '2', name: 'Bob' },
{ id: '1', name: 'Charlie' },
{ id: '3', name: 'Dave' }
];
// 删除id相同的项并打印结果
const result = removeDuplicatesById(data, 'id');
console.log(result);
```
在这个例子中,我们首先创建了一个Set来存储唯一的id。然后通过`filter()`方法,对于数组中的每个元素,检查它的id是否已经在Set中,如果没有就在新数组中保留在`result`中。最后返回的就是去重后的数组。
阅读全文