js数组去重(多种写法)
最基本的写法 使用indexOf()
var arr = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2]
//比较常规的语法使用indexOf来判断是否已经存在
getFileArray(arr)
function getFileArray(arr){
var array = [];
arr.forEach(e => {
if(array.indexOf(e) !== -1){
return;
}else {
array.push(e)
}
});
return array;
}
看起来性能还不错的去除方法
// 通过遍历每次被值给到数组角标 适用于数组里面数量不太的数组
var arr = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2]
getFilterArray(arr)
function getFilterArray (array) {
const res = [];
const json = {};
for (let i = 0; i < array.length; i++){
const _self = array[i]; //获取迭代的数值
if(!json[_self]){ //假如json在_self这个下标没有数值,就说明这个数据没有
res.push(_self); //没有的话就push
json[_self] = 1; //同时给这和匹配不到的下标一个值,保证下次进不来
} // 这样写的话 不需要循环遍历 对性能要求更小
}
return res;
}
另类的写法
var array = [1, 1, 5, 77, 32, 54, 2, 4, 5, 2, 2, 4, 52, 2, 2, 2, 2, 2]
arrtoObject(arr)
function arrtoObject(arrs) {
//var obj={};
var obj = new Object();
for (var i = 0; i < arrs.length; i++) {
obj[arrs[i]] = true;
}
objectToarr(obj)
}
function objectToarr(obj){
console.log(obj);
var arr = [];
for (const i in obj) {
arr.push(i)
}
console.log(arr);
return arr
}
ES5 filter过滤函数
var array = [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2]
function unique(array) {
var res = array.filter(function (item, index, array) {
return array.indexOf(item) === index; //因为array.indexOf返回数组的下标 如果这里的下标和index不一样说明已经存在了,就直接退出了
})
return res;
}
console.log(unique(array));
ES6 Set 这简直就是为过滤而生的 过滤 排序
var arr = [1, 1, 5, 77, 32, 54, 2, 4, 5, 2, 2, 4, 52, 2, 2, 2, 2, 2]
function FilterArray(arr) {
set = new Set(arr)
let arrays = Array.from(set)
arrays.sort((a, b) => {
return a - b
})
return arrays
}
FilterArray(arr)
假如只要排序的话
我们可以用一行代码实现
var arr = [1, 1, 5, 77, 32, 54, 2, 4, 5, 2, 2, 4, 52, 2, 2, 2, 2, 2]
var FilterArray = (arr) => [...new Set(arr)] //
FilterArray(arr)
js数组去重(多种写法)的更多相关文章
- js数组去重(多种方法)
// js数组去重 Array.prototype.fun1 = function(){ var arr = this, result = [], i, len = arr.length; for(i ...
- js数组去重解决方案
js数组去重是前端面试中经常被问的题目,考察了面试者对js的掌握,解决问题的思路,以及是否具有专研精神.曾经一位前端界大神告诉我,解决问题的方式有很多种,解决问题时多问问自己还有没有其他的方法,探求最 ...
- js数组去重的4种方法
js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...
- JS 数组去重(数组元素是对象的情况)
js数组去重有经典的 几种方法 但当数组元素是对象时,就不能简单地比较了,需要以某种方式遍历各值再判断是否已出现. 因为: 1.如果是哈希判断法,对象作哈希表的下标,就会自动转换成字符型类型,从而导致 ...
- js数组去重常用方法
js数组去重是面试中经常会碰到的问题,无论是前端还是node.js数组常见的有两种形式,一种是数组各元素均为基本数据类型,常见的为数组字符串格式,形如['a','b','c'];一种是数组各元素不定, ...
- js 数组去重小技巧
js 数组去重小技巧 Intro 今天遇到一个问题,需要对数据进行去重,想看一下有没有什么比较方便的方法,果然有些收获. Question 问题描述: 我有一个这样的数据: [ { "Pro ...
- JS数组去重的几种常见方法
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
- js数组去重五种方法
今天来聊一聊JS数组去重的一些方法,包括一些网上看到的和自己总结的,总共5种方法(ES5). 第一种:遍历数组法 这种方法最简单最直观,也最容易理解,代码如下: var arr = [2, 8, 5, ...
- js数组去重的方法(转)
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
随机推荐
- shell编程报错:“syntax error near unexpected token `”
今天写了个shell脚本,在自己机器上运行正常,给同事,运行报错syntax error near unexpected token `,左看右看shell脚本没有问题,没有办法google搜索,发现 ...
- leetcode-distinct sequences
Solution: when see question about two strings , DP should be considered first. We can abstract this ...
- 【Leetcode】【Medium】Search a 2D Matrix
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- l2tp over ipsec
搭建教程: 转自: https://segmentfault.com/a/1190000006125737 http://www.wangyuxiong.com/blog/ti-yan-qiang-w ...
- hexo安装-nodejs
npm- 安装淘宝源 http://npm.taobao.org/$ npm install -g cnpm --registry=https://registry.npm.taobao.org- 查 ...
- Ubuntu下python的第三方module无法在pycharm中导入
换了台笔记本,新安装的requests module无法在pycharm导入: Traceback (most recent call last): File "/home/winsterc ...
- linux中无法使用sudo的方法
xxx is not in the sudoers file.This incident will be reported.的解决方法 1.切换到root用户下. 2.添加sudo文件的写权限,命令是 ...
- css3 box-shadow属性 鼠标移动添加阴影效果
text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果. 基本语法:{box-shadow:[inset] x-offset y-offset blur-rad ...
- python 爬虫网络图片中遇到的问题总结
1.只导入了import urllib,读取网页的时候page =urllib.urlopen(url),提示 “module’ object has no attribute ’urlopen’”, ...
- 对std::map进行排序
1.对Key排序. std::map的第三个参数即为对key进行排序的比较函数.默认为less,表示升序.如果要降序,可以改为greater. 2.对Value排序 不支持,因为map不是一个序列的容 ...