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方法 * */ ...
随机推荐
- wpf 转型 android开发总结
今年马上就要过去了,这一年中我经历了从wpf转型到qt/qml,然后最近又要开始搞android,从我个人的经验来看不论是qml还是android从框架和设计上都跟wpf类似,并且移动端的设计因为很多 ...
- python 二叉树计算器
例子:计算1+2+3+4的值 代码: class Buffer(object): """字符串处理函数""" def __init__(se ...
- 关于ios 10 的新的部分
编译器Xcode 8.2.1 SDK 10.2 1. 关于麦克风,相机,相册等部分的权限,需要在info.plist内进行设置,否则会出现crash.
- git rebase vs git merge详解
https://medium.com/@porteneuve/getting-solid-at-git-rebase-vs-merge-4fa1a48c53aa#.std3ddz0g 请参考另外一篇文 ...
- .Net中初探Redis
一.简介 Redis是著名的NOSQL数据库,本质就是存储键值对结构的数据,为存储键值对数据做了优化,在大型网站中应用很多.Redis提供了数据的自动过期处理,因此适合存储临时数据. 和Redis类似 ...
- How to import .sql script
How to import .sql script 1.Export .sql from pl/sql developer you can reference to other document in ...
- 解决Unity3D操作界面字体模糊的问题
新装的电脑安装了UNITY后,操作界面的字体异常模糊,搜了半天看看有没有换字体的功能,也没找到 后来快放弃的时候,偶然看到这篇文章http://eyehere.net/2014/unity3d-int ...
- WiFi安全测试工具WiFiPhisher
官方下载地址:https://github.com/sophron/wifiphisher打不开的要翻GFW好事做到底wifiphisher-master.zip=================== ...
- 移动端适配插件(flexible.js)
;(function(win, lib) { var doc = win.document; var docEl = doc.documentElement; var metaEl = doc.que ...
- Javascript 中 Array的 sort()和 compare()方法
Javascript 中 Array的 sort()方法其实是把要排序的内容转化为string(调用 toString()), 然后按照字符串的第一位 ascii 码先后顺序进行比较,不是数字. 我们 ...