我想将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?
}
答案 0 :(得分:49)
arr1d = [].concat(...arr2d);
请注意,此方法仅在arr2d
小于约100 000个子数组时有效。如果您的数组大于此值,则会得到RangeError: too many function arguments
。
arr = [];
for (row of table) for (e of row) arr.push(e);
无论如何, concat()
在这种情况下太慢了。
这会递归地压平任何深度的数组(也适用于大型数组):
arr1d = _.flatten(arr2d);
如果您只想将其展平为一个级别,请将true
作为第二个参数传递。
arr1d = [].concat.apply([], arr2d);
答案 1 :(得分:22)
尝试.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);
答案 2 :(得分:8)
怎么样:
var arrToConvert = [[0,0,1],[2,3,3],[4,4,5]];
function get1DArray(arr){
return arr.join().split(",");
}
console.log(get1DArray(arrToConvert));
答案 3 :(得分:7)
var test2d = [
["foo", "bar"],
["baz", "biz"]
];
var merged = test2d.reduce(function(prev, next) {
return prev.concat(next);
});
答案 4 :(得分:1)
var arrToConvert = [[0,0,1],[2,3,3],[4,4,5]];
var modifiedArray = arrToConvert.map(function(convArray){
return array[0]+array[1]+array[2];
});
另一个例子
var passengers = [
["Thomas", "Meeks"],
["Gregg", "Pollack"],
["Christine", "Wong"],
["Dan", "McGaw"]
];
var modifiedNames = passengers.map(function(convArray){
return convArray[0]+" "+convArray[1];
});
答案 5 :(得分:0)
var arrToConvert = [[0, 0, 1], [2, 3, 3], [4, 4, 5]];
function get1DArray(arr){
var result = new Array();
for (var x = 0; x < arr.length; x++){
for (var y = 0; y < arr[x].length; y++){
result.push(arr[x][y])
}
}
return result
}
alert (get1DArray(arrToConvert))