数组去重

一、ES6最常用Set去重

Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。

function unique(arr) {   return Array.from(new Set(arr)) } let arr = [1, 1, 'true', 'true', true, true, 15, 15]; console.log(unique(arr))            // [ 1, 'true', true, 15 ]   let unique2 = arr => [...new Set(arr)] console.log(unique2(arr));        //  [ 1, 'true', true, 15 ]  

二、双重for循环

外层循环元素,内层循环时比较值。

function unique(arr) {
  for (var i = 0; i < arr.length; i++) {
    for (var j = i + 1; j < arr.length; j++) {
      if (arr[i] == arr[j]) {                    //第一个等同于第二个,splice方法删除第二个
        arr.splice(j, 1);
        j--;
      }
    }
  }
return arr;
}
let arr = [1, 1, 'true', 'true', true, true, 15, 15];
console.log(unique(arr)    // [ 1, 'true', true, 15 ]

 

三、indexOf或includes去重

当数组内没有该元素时,indexOf返回-1,则把它push进新数组。

function unique(arr) {   var array = [];   for (var i = 0; i < arr.length; i++) {     if (array .indexOf(arr[i]) === -1) {       array .push(arr[i])     }   }   return array; } includes() 方法用于判断字符串是否包含指定的子字符串。如果找到匹配的字符串则返回 true,否则返回 false。

function unique(arr) {
  var array = [];
  for (var i = 0; i < arr.length; i++) {
    if (!array.includes( arr[i]) ) {
      array .push(arr[i])
    }
  }
  return array;
}

 

四、filter去重

原始数组中元素的索引等于当前索引值时返回,否则返回当前元素

function unique(arr) {   var res = arr.filter(function(item, index, array) {     return array.indexOf(item) === index   })   return res }

 

上一篇:JS:数组去重的多种方法总结与一步步优化


下一篇:php从数组中随机筛选出指定个数的值