JS数组去掉重复元素
JS数组去掉重复元素,这里提供3中写法。
var arr =[1,2,3,4,5,6,3,4,7,2,4,1,8];
输出:[1,2,3,4,5,6,7,8];
1.使用indexOf()
arr.indexOf(a,b)这个方法是查找a在arr中首次出现的位置(b这个参数规定了在arr中开始检索的位置,可写可不写,不写的话检索位置为0).
利用这个方法来判断新数组中是否出现过这个元素,如果新数组中没有这个元素,那么把元素添加到新数组中,如果新数组中已经有这个元素了那就不进行操作,遍历之后得到的新数组即为所求。
<script>
var arr = [1,2,3,4,5,6,3,4,7,2,4,1,8];//原数组
var newArr = [];//定义一个新数组来接收元素 for(var i = 0;i<arr.length;i++){
//判断newArr中是否有arr[i]这个元素,如果返回结果为-1(<0)证明新数组newArr中没有这个元素,则把元素添加到新数组中
if(newArr.indexOf(arr[i])<0){
newArr.push(arr[i]);
}
} console.log(newArr); </script>
2.不添加新数组的比较
将数组中前一个元素与后面剩下的元素依次进行比较,如果发现两个元素相同,则删除后面的元素。
这里会用到arr.splice(index,n);这个方法是删除数组中的某个元素,删除下标为index的元素,删除n位
<script>
var arr = [1,2,3,4,5,6,3,4,7,2,4,1,8];
for(var i = 0;i<arr.length-1;i++){//遍历获取“前一个元素”,最后一个数不用获取,它本身已经被前面所有元素给排除过了
for(var j = i+1;j<arr.length;j++){//遍历获取剩下的元素,“后一个元素”的起始索引就是“前一个元素”的索引+1
if(arr[i] == arr[j]){//如果“前一个元素”与后面剩下的元素之一相同,那么就要删除后面的这个元素
arr.splice(j,1);
j--;//如果删除了这个元素,那么后面的元素索引值就会发生改变,所以这里的j需要-1
}
}
}
console.log(arr);
</script>
3.使用空对象比较
这个方法相对来说比较麻烦,是我前几天学习对象的时候写的方法,主要就是利用对象的属性和属性值来判断这个对象中是否存在这个属性,如果存在这个属性那么就把这个元素在数组中删除当中。
把数组的元素给对象当成属性,对象中没有这个属性,那么就添加这个属性并给属性一个属性值,如果这个对象中有这个属性那么就删除这个数组的元素。
<script>
var obj = {};
for(var i = 0;i<arr.length;i++){
var o = arr[i];//将数组中的元素给对象
if(obj[o] == undefined){//obj[o]取对象中属性为o的属性,如果没有这个属性则会返回undefined
//可以判断obj这个对象中有没有这个属性
obj[o] = 1;
}else{
arr.splice(i,1);
}
}
console.log(arr); </script>
JS数组去掉重复元素的更多相关文章
- 高效率去掉js数组中重复项
Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法: function unique(arr) { var result = [], isRepeated; for (v ...
- php 去除数组中重复元素
去除数组中重复元素, 找了下可以一下两个函数 php array_flip()与array_uniqure() $arr = array(…………) ;// 假设有数组包含一万个元素,里面有重复的元素 ...
- 统计js数组中奇数元素的个数
如何统计一个JS数组中奇数元素的个数呢? 这是群友提出的一个问题,大部分群友给出的是遍历 然后对2取模,得到最终结果. 这样的写法是最容易想得到的,那么有没有其他思路呢? 这里我提供另外一种思路,我们 ...
- list去掉重复元素
需求: 有list 里面含有重复元素,要求去掉重复元素: solution 1: >>> a [1, 2, 2, 1, 3, 4, 5, 6, 5] >>> set ...
- PHP 二维数组去掉重复值并保持原结构
PHP 二维数组去掉重复值并保持原结构 直接上代码,解释很详细 //二维数组去掉重复值 function arrunique($a){ foreach($a[0] as $k => $v){ / ...
- Go切片去掉重复元素
1.Go切片去掉重复元素 如果传入的是string类型: //slice去重 func removeRepByMap(slc []string) []string { result := []stri ...
- 在angular中使用ng-repeat时数组中有重复元素,要用item in items track by $index
在angular中使用ng-repeat时数组中有重复元素,要用item in items track by $index,不然会报错 <div class="" ng-in ...
- JS如何去掉一个数组的重复元素 (数组去重)
一.思路如下: 定义一个新数组,将老数组遍历一遍,再进行判断,如果新数组里面没有老数组的元素就添加,否则就不添加,最终输出整个新数组. 二.代码如下: var arr = ["a" ...
- JS - 给数组的原型添加去掉重复元素的distinct方法
/* 调用完该方法,原数组只留下非重复的数据 返回一个数组,里面是依次出现的重复元素 */Array.prototype.distinct = function () { var removeA ...
随机推荐
- 自己动手写Android插件化框架
自己动手写Android插件化框架 转 http://www.imooc.com/article/details/id/252238 最近在工作中接触到了Android插件内的开发,发现自己这种技 ...
- Smarty的分页实现
Smarty中的分页有很多方法.1.使用Smarty的分页插件,如Pager,pagnition,sliding_page等,不过感觉都不是太好,几乎都有一些Bug.有兴趣试用和自己去改进的朋友可以看 ...
- smarty建的mvc环境
================================搭建MVC结构================================基于MVC,解耦合 (高内聚,低耦合),优点:易维护.易扩 ...
- 14Flutter StatefulWidget有状态组件、页面上绑定数据、改变页面数据、实现计数器功能、动态列表
/** * Flutter StatefulWidget有状态组件.页面上绑定数据.改变页面数据 * 在Flutter中自定义组件其实就是一个类,这个类需要继承StatelessWidget/Stat ...
- centos 7 gitlab安装服务器
详情见 https://blog.csdn.net/duyusean/article/details/80011540
- java泛型中特殊符号的含义
java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number ...
- 怎样获取java新IO的Path文件大小
import org.junit.Test; import java.io.IOException; import java.nio.file.Files; import java.nio.file. ...
- Excel导入工具类
项目需要从Excel导入数据,然后插入到数据库对应表中.设计了一个导入工具类,导入数据和导入结果如下图示: poi jar版本采用的3.15 导入工具类实现如下: package com.alphaj ...
- [Java]1.两数之和 - LeetCode
1 题目 2 思路与代码 思路一:暴力法(两层For循环) 时间复杂度:O(n^2) 对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n) 的时间.因此时间复杂度为 ...
- windows进入指定目录
1.进入cmd 2.输入盘符比如:E: 3.切换目录 cd E:\progect\Firstdjango 实例: