js数组常用去重的几种方法(includes、sort、indexOf、splice、filter)
作者:Miao 阅读:4930次
includes去重
arr.includes(指定元素(必填),指定索引值(可选,默认值为0)),有值返回true,没有则返回false。
let arr = [-2, 1, 9, -3, -2, 6, 6, 7];
function test(arr) {
let arrNew = [];
for (let i = 0, len = arr.length; i < len; i++) {
if (!arrNew.includes(arr[i])) {
arrNew.push(arr[i]);
}
}
return arrNew;
}
console.log(test(arr)); // -2, 1, 9, -3, 6, 7sort去重(默认升序)
let arr = [5, 4, 1, 9, 1, 8, 3, 4, 9, 7, 0];
function test(arr) {
arr = arr.sort();
let arrNew = [arr[0]];
for (let i = 1, len = arr.length; i < len; i++) {
if (arr[i] !== arr[i - 1]) {
arrNew.push(arr[i]);
}
}
return arrNew;
}
console.log(test(arr)); // 0, 1, 3, 4, 5, 7, 8, 9indexOf去重
array.indexOf(item,statt) 返回数组中某个指定的元素的位置,没有则返回-1。
let arr = [1, 0, -1, 0, 1, 8, 3, 8];
function test(arr) {
let arrNew = [];
for (let i = 0, len = arr.length; i < len; i++) {
if (arrNew.indexOf(arr[i]) === -1) {
arrNew.push(arr[i]);
}
}
return arrNew;
}
console.log(test(arr)); // 1, 0, -1, 8, 3splice去重(双for循环,ES5常用)
let arr = [1, 5, 6, 8, 7, 3, 8, 5, 9, 7, 5];
function test(arr) {
for (let i = 0, len = arr.length; i < len; i++) {
for (let j = i + 1, len = arr.length; j < len; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
console.log(test(arr)); // 1, 5, 6, 8, 7, 3, 9filter去重
let arr = [1, 2, 8, 9, 9, 8, 3, 2, 5];
function test(arr) {
return arr.filter(function(item, index) {
return arr.indexOf(item, 0) === index;
});
}
console.log(test(arr)); // 1, 2, 8, 9, 3, 5
本站部分文章、数据、素材收集于网络,所有版权均归源网站或原作者所有!
如果侵犯了您的权益,请来信告知我们下线删除,邮箱:357234902@qq.com


