我有一个包含一些字符串数据的多维JavaScript数组。
var array = [];
array[0] = ["A","B","C"];
array[1] = ["G","H"];
我想将这些合并到一个新数组中。
第一个数组的值1应该与数组2中的值1合并,依此类推。
当然,我可以这样做。
var array2 = array[0][0] + array[1][0];
但我没有数据,所以第一个数组可以容纳6个值,也可能有2个以上的数组。
有没有办法动态迭代多维数组并创建一个新数组。
答案 0 :(得分:1)
您可以使用 Array#map
和 Array#join
方法。
// iterate over multi diamensional array and
// generate array with first element of each nested array
var array2 = array.map(function(v){
// retrieve the first element
return v[0];
// join them to convert into a string as your output
}).join('')
var array = [];
array[0] = ["A", "B", "C"];
array[1] = ["G", "H"];
var array2 = array.map(function(v) {
return v[0];
}).join('')
console.log(array2);

如果您想对所有索引执行相同操作,请使用 Array#reduce
方法。
var array = [];
array[0] = ["A", "B", "C"];
array[1] = ["G", "H"];
// iterate and reduce a single array
var array2 = array.reduce(function(arr, e) {
// iterate over nested array
e.forEach(function(v, i) {
// concatenate with the elements in parent array
arr[i] = (arr[i] || '') + v;
});
return arr
// set initial value as array
}, [])
console.log(array2);

答案 1 :(得分:0)
最简洁的写作方式如下:
arrays[0].map((_, i) => arrays.map(array => array[i]).join(''))
打破它:
arrays[0] // Starting with the first sub-array,
.map( // create a corresponding array
(_, i) => // whose value, for each index is,
arrays // for each of the sub-arrays,
.map( // an array whose values are
array => array[i]) // the subarray at that index
)
.join('') // with its elements joined together
);
答案 2 :(得分:0)
我相信你需要做这样的事情:
myArray = [["s","m","a"],["d","f"],["t","h","r"]];
function generateStrings(array2d){
newArray = [];
function interate(n){
newString = myArray.reduce((p,c)=>{return c[n]?p+c[n]:p},"")
console.log(newString)
if (newString)newArray.push(newString),interate(n+1)
}
interate(0)
return newArray;
}
generateStrings(myArray);
答案 3 :(得分:0)
您可以使用简单的reduce函数来合并Array。
const arr = [ [1, 2, 3], [4, 5] ];
const newArr = arr.reduce((acc, x) => [...acc, ...x], [])
console.log(newArr) // [1, 2, 3, 4, 5]
如果您需要在合并后创建String
对象,则只需在返回的数组上应用join('')
。
如果你想使用它,这是函数的concat
版本。
const newArr = arr.reduce((acc, x) => acc.concat(...x), [])