网站建设公司中企动力强,拍拍网站开发,做网站中的镜像是什么,网站备案中心数组去重方法老生常谈#xff0c;既然是常谈#xff0c;我也来谈谈。 也许我们首先想到的是使用 indexOf 来循环判断一遍#xff0c;但在这个方法之前#xff0c;让我们先看看最原始的方法#xff1a;
var array [1, 1, 1, 1];function unique(array) {// res用来存储结… 数组去重方法老生常谈既然是常谈我也来谈谈。 也许我们首先想到的是使用 indexOf 来循环判断一遍但在这个方法之前让我们先看看最原始的方法
var array [1, 1, 1, 1];function unique(array) {// res用来存储结果var res [];for (var i 0, arrayLen array.length; i arrayLen; i) {for (var j 0, resLen res.length; j resLen; j ) {if (array[i] res[j]) {break;}}// 如果array[i]是唯一的那么执行完循环j等于resLenif (j resLen) {res.push(array[i])}}return res;
}console.log(unique(array)); // [1, 1] 在这个方法中我们使用循环嵌套最外层循环 array里面循环 res如果 array[i] 的值跟 res[j] 的值相等就跳出循环如果都不等于说明元素是唯一的这时候 j 的值就会等于 res 的长度根据这个特点进行判断将值添加进 res。
看起来很简单吧之所以要讲一讲这个方法是因为——————兼容性好
我们可以用 indexOf 简化内层的循环
var array [1, 1, 1];function unique(array) {var res [];for (var i 0, len array.length; i len; i) {var current array[i];if (res.indexOf(current) -1) {res.push(current)}}return res;
}console.log(unique(array));
排序后去重效率高
我们先将要去重的数组使用 sort 方法排序后相同的值就会被排在一起然后我们就可以只判断当前元素与上一个元素是否相同相同就说明重复不相同就添加进 res
var array [1, 1, 1];function unique(array) {var res [];var sortedArray array.concat().sort();var seen;for (var i 0, len sortedArray.length; i len; i) {// 如果是第一个元素或者相邻的元素不相同if (!i || seen ! sortedArray[i]) {res.push(sortedArray[i])}seen sortedArray[i];}return res;
}console.log(unique(array));