用js 写一个简单的数组去重
时间: 2023-07-06 22:40:12 浏览: 88
可以使用 ES6 的 Set 数据结构来实现数组去重:
```javascript
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
也可以使用普通的 for 循环和 indexOf 方法来实现数组去重:
```javascript
function uniqueArray(arr) {
const result = [];
for (let i = 0; i < arr.length; i++) {
if (result.indexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
return result;
}
const arr = [1, 2, 2, 3, 3, 4, 5, 5];
const uniqueArr = uniqueArray(arr);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
相关问题
一个数组对象 去重 去重的条件是 id 一致的 并且num 一致 然后 删除没有 type字段的
在JavaScript中,你可以通过多种方法处理这个数组去重问题,特别是在满足特定条件(如ID和num相同,并且存在type字段)的情况下。这里是一个示例,我们将使用ES6的Array.prototype.filter()和reduce()方法来完成:
```javascript
function uniqueObjects(array, key1 = 'id', key2 = 'num', mustHaveType = true) {
// 检查数组是否包含必须有的'type'字段
const hasType = array.every(obj => obj.hasOwnProperty('type'));
if (!mustHaveType && !hasType) {
return array; // 如果不需要'type'并且不存在,则直接返回原始数组
}
// 使用filter()过滤出符合条件的对象
const filtered = array.filter(obj => {
// 对于每对ID和num相同的对象,检查它们的'type'是否存在
return array.every(o2 => o2[key1] === obj[key1] && o2[key2] === obj[key2] ? o2['type'] !== undefined : false);
});
// 使用reduce()创建一个新的唯一对象集合,键是唯一的组合(id, num)
const result = filtered.reduce((acc, cur) => {
const key = `${cur[key1]}_${cur[key2]}`;
acc[key] = cur; // 如果键不存在就添加,如果存在则替换值
return acc;
}, {});
// 将结果转换回数组形式
return Object.values(result); // 返回只包含唯一对象的新数组
}
// 示例用法
const arr = [
{ id: 1, num: 1, type: 'a' },
{ id: 1, num: 1, type: 'b' },
{ id: 2, num: 2, type: 'c' },
{ id: 1, num: 1 },
{ id: 3, num: 3 }
];
const uniqueArr = uniqueObjects(arr);
console.log(uniqueArr); // 输出:[ { id: 1, num: 1, type: 'a' }, { id: 2, num: 2, type: 'c' } ]
js filter数组去重
在JavaScript中,可以使用`filter`方法对数组进行去重操作。下面是一种常见的使用`filter`方法进行数组去重的方式:
```javascript
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.filter((value, index, self) => {
return self.indexOf(value) === index;
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
在上述代码中,`filter`方法接受一个回调函数作为参数,该回调函数会被应用于数组的每个元素。在回调函数中,使用`indexOf`方法来判断当前元素在数组中的第一个索引位置是否与当前索引位置相同,如果相同则保留该元素,否则过滤掉。这样就可以得到一个去重后的新数组。
阅读全文