數組常用操作

數組常用操作

1,數組去重

1.1 set去重

var arr = [1,2,1,1,22,4,5,6];
arr1 = [...new Set(arr)];

1.2 結合使用數組filter方法和indexOf()方法

var arr = [1, 2, 3, 2, 6, '2', 3, 1];
function uniqueArr (arr) {
    return arr.filter(function (ele, index, array) {
        // 利用數組indexOf()方法,返回找到的第一個值的索引
        // 如果數組元素的索引值與indexOf方法查找返回的值不相等,則說明該值重複了,直接過濾掉
        return array.indexOf(ele) === index;
    })
}

1.3 多維數組一行代碼實現一維轉換

var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];

var resultArr = arr.toString().split(',').map(Number);

console.log(resultArr); // [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]

1.4 一行代碼實現獲取一個網頁使用了多少種標籤

[...new Set([...document.querySelectorAll('*')].map(node => node.tagName))].length;

1.5 統計字符串中相同字符出現的次數

var str = 'aaabbbccc66aabbc6';

var strInfo = str.split('').reduce((p, c) => (p[c]++ || (p[c] = 1), p), {});

console.log(strInfo); // {6: 3, a: 5, b: 5, c: 4}

var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];

var countedNames = names.reduce(function (allNames, name) { 
  if (name in allNames) {
    allNames[name]++;
  }
  else {
    allNames[name] = 1;
  }
  return allNames;
}, {});

1.6 將類數組對象轉成數組

var likeArrObj = {
    0: 1,
    1: 2,
    2: 3,
    length: 3
}

var arr1 = Array.prototype.slice.call(likeArrObj); // 或者使用[].slice.call(likeArrObj);
console.log(arr1); // [1, 2, 3]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章