JS双重for循环数组去重代码
时间: 2023-03-29 17:04:04 浏览: 111
```
var arr = [1,2,3,4,1,2,3];
var newArr = [];
for(var i = 0; i < arr.length; i++) {
if(newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
console.log(newArr);
```
这是使用双重循环去重的代码,其中使用的是 Array.prototype.indexOf() 方法来检查新数组中是否已经存在该元素。
相关问题
数组去重的方法和实现代码
数组去重有许多方法,以下是几种常见的实现:
1. **利用 Set** (ES6 新增):
```javascript
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = [...new Set(arr)];
```
Set 是一种不允许有重复元素的数据结构,所以转换为 Set 再转回数组就实现了去重。
2. **使用 Map** (JavaScript 特性):
```javascript
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = Array.from(new Map(arr.map((value, index) => [value, index])));
```
这里用 Map 作为中间容器,因为每个元素第一次出现时会自动存储,重复的不会添加第二次。
3. **双重循环**:
```javascript
function uniqueArray(arr) {
let result = [];
for(let i = 0; i < arr.length; i++) {
if(result.indexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
return result;
}
```
这个方法遍历原数组,如果新元素不在结果数组中,则添加。
4. **利用 indexOf 或 includes**:
```javascript
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = arr.filter((value, index, self) => self.indexOf(value) === index);
```
这里使用 filter 方法,每次检查当前元素是否在原数组中首次出现。
以上都是基于 ES5 的解决方案,ES6 后有了更简洁的方法。
js 对象数组去重
对于JavaScript对象数组的去重,有几种常见的方法可以实现。
方法一是使用ES5的冒泡排序法进行去重。可以通过遍历数组,比较每个对象的属性值,如果存在重复的属性值,则使用splice方法删除重复的对象。最后返回去重后的数组。
方法二是使用ES5的双重循环方法进行去重。通过遍历数组,使用forEach方法遍历每个对象,利用every方法检查是否已经存在相同的属性值,如果不存在,则将该对象添加到一个临时数组中。最后返回去重后的数组。
方法三是使用两层循环或reduce方法进行去重。通过遍历数组,比较每个对象的属性值,如果存在重复的属性值,则使用splice方法删除重复的对象。最后返回去重后的数组。
总结起来,可以使用冒泡排序法、双重循环或reduce方法对JavaScript对象数组进行去重操作。具体选择哪种方法取决于具体的需求和数据结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
阅读全文