Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代多维javascript数组并创建新数组?_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

迭代多维javascript数组并创建新数组?

迭代多维javascript数组并创建新数组?,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有一个多维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个以上的数组 是否有一种方法可以动态迭代多维数组并创建新数组

我有一个多维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个以上的数组


是否有一种方法可以动态迭代多维数组并创建新数组。

最简洁的编写方法如下:

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
  );
您可以使用方法

// 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数组=[];
数组[0]=“A”、“B”、“C”];
数组[1]=[“G”,“H”];
var array2=array.map(函数(v){
返回v[0];
}).加入(“”)

控制台日志(array2)我认为您需要执行以下操作:

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);

可以使用简单的reduce函数合并数组

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), [])

[“A”、“B”、“C”].concat([“G”、“H”])
var array2=array[0][0]+array[1][0];array2=“AG”。
array.map(x=>x[0])
请添加预期的输出和您尝试的代码。输出应为“AG”。
未捕获语法错误:意外标记[
Oops..您需要map
(如果
数组[0],这会正常工作吗?)
比其他数组短吗?不,但我不知道在这种情况下需要什么。太好了。这正是我需要的。你让我很开心。@AlexClaesson:很乐意帮忙:)这是一种非常笨拙的方法。
[]concat(…arr)
,这不是OP想要做的。当然你也可以使用concat,但它看起来不太好。你的选择。