天天看點

[引用類型][Array]javascript數組降維JavaScript數組降維

  • JavaScript數組降維
      • 二維數組降維
      • 多元數組降維
    • Array類型方法總結

JavaScript數組降維

二維數組降維

Q: [[1,2,3],[4,5,6]]這樣的二維數組降維成一維數組

// 周遊數組 使用concat連接配接
function reduceDimension(arr) {
    let arr2 = []; 
    arr.forEach((item) => {
        arr2 = arr2.concat(item);
    });
    return arr2;
}
// 使用apply傳入參數數組,僅一行代碼
function reduceDimension2(arr) {
    return Array.prototype.concat.apply([], arr);
    // [].concat(arr[], arr[], ...);
}
const arr = [[1, 2, 3],[{},'i am string']];
console.log(reduceDimension(arr), reduceDimension2(arr));
           

多元數組降維

var arr = [, , [, ], [, 'f', ['w', ]], { "name": 'Tom' }];
function deepFlatten(arr) {
    var res = [];
    if (Array.isArray(arr)) {
        arr.forEach((item) => {
            res = res.concat(deepFlatten(item));
        });
    } else {
        res = res.concat(arr);
    }
    return res;
}
console.log(deepFlatten(arr));// [2, 3, 2, 2, 3, "f", "w", 3, {name: "Tom"}]
           

Array類型方法總結

  • Array方法:
    方法 類别 描述 參數 傳回值
    filter 一層深拷貝 建立一個新數組,其包含通過所提供函數實作的測試的所有元素
    concat 一層深拷貝 合并兩個或多個數組 concat() 方法把合并的數組元素淺拷貝到一個新數組對象。且原始數組不會被修改。 多個數組參數 合并後的數組
    pop 改變原數組 删除最後一個元素 數組的最後一個元素
    push 改變原數組 增加一個元素或更多元素 添加到數組的一個或多個元素 新的長度
    reverse 改變原數組
    shift 改變原數組 删除第一個元素 數組的第一個元素
    unshift 改變原數組 從頭插入 一個或多個元素 新的長度
    slice 深拷貝 just一層 slice() 方法傳回一個從開始到結束(*不包括結束*)選擇的數組的一部分淺拷貝到一個新數組對象。且原始數組不會被修改。 start,end預設0,length 拷貝的新數組
    sort 改變原數組 sort函數
    splice 改變原數組 向/從數組中添加/删除項目,然後傳回被删除的項目。 删除位置,删除數量,添加的新項目 被删除的項目
    join 把數組的所有元素放入一個字元串。元素通過指定的分隔符進行分隔。 數組 String
    toString
    toLocalString
    valueOf
// slice是一層深拷貝
var a = [[,,],,];
var b = a.splice();
console.log(a === b);// true
a[][] = ;
console.log(a===b); // true
console.log(a[] === b[]); // false
           
JavaScript之數組降維

繼續閱讀