利用es5
的arr.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 宣告二維,每乙個一維陣列...