二維陣列扁平化

三種不同的解決方法 將二維陣列合併為單一的陣列

給定一個陣列:

var myArray = [[1, 2],[3, 4, 5], [6, 7, 8, 9]];

我們想得到這個結果:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

方法一:

var myNewArray = [];
for (var i = 0; i < myArray.length; ++i) {
    for (var j = 0; j < myArray[i].length; ++j){
        myNewArray.push(myArray[i][j]);
    }
}
console.log(myNewArray);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

方法二:

var myNewArray = myArray.reduce(function(prev, curr) {
  return prev.concat(curr);
});
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

方法三:

var myNewArray = [].concat.apply([], myArray);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

過濾陣列中重複的元素

利用這個函式,我們可以使用在過濾陣列中重複的元素

var originArr = [1, 'a', 1, 'a'];

var deduped = originArr.filter(function(el, i, arr){
    return arr.indexOf(el) === i;
});

console.log(deduped); // [1, 'a']

用 ES6 的語法可以寫得更簡潔

var originArr = [1, 'a', 1, 'a'];

var deduped = originArr.filter((el, i, arr) => arr.indexOf(el) === i);

console.log(deduped); // [1, 'a']

分享來源:幾個實用的 JS 小技巧

您也可能喜歡這些文章