js 標準二維陣列變一維陣列的方法

2022-06-10 12:06:15 字數 1686 閱讀 7533

利用es5arr.reduce(callback[, initialvalue])實現

var arr1 = [[0, 1], [2, 3], [4, 5]];

var arr2 = arr1.reduce(function (a, b) );

// arr2 [0, 1, 2, 3, 4, 5]

利用es6

var arr1 = [[0, 1], [2, 3], [4, 5]];

function flatten(arr)

var arr2 = flatten(arr1); // arr2 [0, 1, 2, 3, 4, 5]

優點: 多維陣列也可以

比如:var arr = [[1,2],3,[[[4], 5]]]

var arr1 = [[0, 1], [2, 3], [4, 5]];

// arr2 [0, 1, 2, 3, 4, 5]

通過將陣列轉變成字串,利用str.split(',')實現。缺點是陣列元素都變字串了

var arr1 = [[0, 1], [2, 3], [4, 5]];

var arr2 = (arr1 + '').split(',');

var arr2 = arr.tostring().split(',');

var arr2 = arr.join().split(',');

// arr2 ["0", "1", "2", "3", "4", "5"]

利用 es 的最新語法,array.prototype.flat()。缺點是,有相容性問題。優點是非常簡單。

mdn 上是這麼描述的:flat() 方法會遞迴到指定深度將所有子陣列連線,並返回乙個新陣列。

語法:var newarray = arr.flat(depth),引數說明:depth,可選,指定巢狀陣列中的結構深度,預設值為1。

舉例:

var arr1 = [1, 2, [3, 4]];

arr1.flat(); // [1, 2, 3, 4]

var arr2 = [1, 2, [3, 4, [5, 6]]];

arr2.flat(); // [1, 2, 3, 4, [5, 6]]

var arr3 = [1, 2, [3, 4, [5, 6]]];

arr3.flat(2); // [1, 2, 3, 4, 5, 6]

//infinity展開所有巢狀陣列

arr3.flat(infinity); // [1, 2, 3, 4, 5, 6]

var arr4 = [1, 2, , 4, 5];

arr4.flat(); // [1, 2, 4, 5]

特殊說明:flat()方法會移除陣列中的空項。但undefined、null仍會保留。

var arr = [1, 2, undefined , 4, 5, null];

arr.flat(); // [1, 2, undefined , 4, 5, null]

如有問題或建議,請多多賜教!

js一維陣列轉二維陣列

使用場景舉例 介面返回乙個陣列物件,展示時每行固定顯示n個,則可將返回的陣列轉成二維陣列 n n 的形式迴圈展示。a.陣列元素為基本型別 let basearray 1,2,3,4,5,6,7,8 len len basearray.length let n 4 假設每行顯示4個 let linen...

陣列(一維陣列 二維陣列)

陣列概述 c 陣列從零開始建立索引,即陣列索引從零開始。c 中陣列的工作方式與在大多數其他流行語言中的工作方式類似。但還有一些差異應引起注意。這些其實和泛型有些類似,陣列的操作沒有泛型方便,但是效能卻不是泛型所能比擬的 宣告陣列時,方括號 必須跟在型別後面,而不是識別符號後面。在c 中,將方括號放在...

js二維陣列

方法一 直接定義並且初始化,這種遇到數量少的情況可以用 var thearray 0 1 0 2 1 1 1 2 2 1 2 2 方法二 未知長度的二維陣列 var tarray new array 先宣告一維 for var k 0 ktarray k new array 宣告二維,每乙個一維陣列...