Ответ 1
Попробуйте .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);
Я хочу преобразовать массив 2D JavaScript в 1D-массив, так что каждый элемент 2D-массива будет объединен в один одномерный массив.
Здесь я пытаюсь преобразовать 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?
}
Попробуйте .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);
arr1d = [].concat(...arr2d);
Обратите внимание, что этот метод работает, только если arr2d
имеет менее 100 000 подмассивов. Если ваш массив станет больше, вы получите RangeError: too many function arguments
.
arr = [];
for (row of table) for (e of row) arr.push(e);
concat()
любом случае concat()
слишком медленный в этом случае.
Это будет рекурсивно сглаживать массивы любой глубины (должно также работать для больших массивов):
arr1d = _.flatten(arr2d);
Если вы хотите сгладить только один уровень, передайте true
в качестве второго аргумента.
arr1d = [].concat.apply([], arr2d);
Как насчет:
var arrToConvert = [[0,0,1],[2,3,3],[4,4,5]];
function get1DArray(arr){
return arr.join().split(",");
}
console.log(get1DArray(arrToConvert));
Попробуйте .reduce()
var test2d = [
["foo", "bar"],
["baz", "biz"]
];
var merged = test2d.reduce(function(prev, next) {
return prev.concat(next);
});
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];
});
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))