我想将2D JavaScript数组转换为1D数组,以便将2D数组的每个元素连接成单个1D数组.
在这里,我正在尝试转换arrToConvert为1D阵列.
var arrToConvert = [[0,0,1],[2,3,3],[4,4,5]];
console.log(get1DArray(arrToConvert)); //print the converted array
function get1DArray(2dArr){
//concatenate each element of the input into a 1D array, and return the output
//what would be the best way to implement this function?
}
Run Code Online (Sandbox Code Playgroud)
Bla*_*čič 61
arr1d = [].concat(...arr2d);
Run Code Online (Sandbox Code Playgroud)
请注意,此方法仅arr2d在少于约100 000个子阵列时才有效.如果你的阵列比这个大,你会得到一个RangeError: too many function arguments.
arr = [];
for (row of table) for (e of row) arr.push(e);
Run Code Online (Sandbox Code Playgroud)
concat() 无论如何,在这种情况下太慢了.
这将递归地压平任何深度的数组(也应该适用于大型数组):
arr1d = _.flatten(arr2d);
Run Code Online (Sandbox Code Playgroud)
如果你只想将它压平一个级别,则传递true为第二个参数.
arr1d = [].concat.apply([], arr2d);
Run Code Online (Sandbox Code Playgroud)
Mar*_*rty 25
试试.concat():
var arrToConvert = [[0,0,1],[2,3,3],[4,4,5]];
var newArr = [];
for(var i = 0; i < arrToConvert.length; i++)
{
newArr = newArr.concat(arrToConvert[i]);
}
console.log(newArr);
Run Code Online (Sandbox Code Playgroud)
mar*_*ljn 11
怎么样:
var arrToConvert = [[0,0,1],[2,3,3],[4,4,5]];
function get1DArray(arr){
return arr.join().split(",");
}
console.log(get1DArray(arrToConvert));
Run Code Online (Sandbox Code Playgroud)
小智 10
尝试 .reduce()
var test2d = [
["foo", "bar"],
["baz", "biz"]
];
var merged = test2d.reduce(function(prev, next) {
return prev.concat(next);
});
Run Code Online (Sandbox Code Playgroud)
资料来源:http://jsperf.com/2-dimensional-array-merge
| 归档时间: |
|
| 查看次数: |
39862 次 |
| 最近记录: |