【问题标题】:Add items to one array after each item on another array [duplicate]在另一个数组上的每个项目之后将项目添加到一个数组[重复]
【发布时间】:2019-01-14 18:41:29
【问题描述】:

基本上,我需要从另一个数组中的每个元素添加一个数组中的每个元素。所以如果这是两个数组:

array1 = [
"item1",
"item2",
"item3",
"item4"
];

array2 = [
"choice1",
"choice2",
"choice3",
"choice4"
];

我需要让array1变成这样:

"item1",
"choice1",
"item2",
"choice2",
"item3",
"choice3",
"item4",
"choice4"
];

有人知道怎么做吗?谢谢

【问题讨论】:

  • 欢迎来到 StackOverflow!请记住在问题中包含您尝试过的内容。
  • 欢迎来到 Stackoverflow,在发布问题之前阅读本指南以获得最佳帮助:stackoverflow.com/help/how-to-ask

标签: javascript arrays


【解决方案1】:

鉴于数组的长度相同,您可以在其中一个上进行映射,提供一个数组的返回值,其中两个值都位于两个数组的索引处,然后使用 concat 展平以获得您想要的结果。

[].concat.apply([], array1.map((i, ind) => [i,array2[ind]]));

let a1 = ["item1","item2","item3","item4"], a2 = ["choice1","choice2","choice3","choice4"],
combined_array = [].concat.apply([], a1.map((i, ind) => [i,a2[ind]]));

console.log(combined_array);

您可以类似地使用reduce。如果您不想从 Array 对象中调用 concat,这可能是一个更好的选择:

array1.reduce((acc, i, ind) => acc.push(i, array2[ind])&&acc, []);

    let a1 = ["item1","item2","item3","item4"], a2 = ["choice1","choice2","choice3","choice4"],
    combined_array = a1.reduce((acc, i, ind) => acc.push(i, a2[ind])&&acc, []);
   

    console.log(combined_array);

【讨论】:

    【解决方案2】:
    let array3 = [];
    for(let i = 0; i < array1.length; i++){
      array3.push(array1[i]);
      array3.push(array2[i]);
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用forEach() 迭代第一个数组。然后将当前项推送到结果数组中,并使用索引从第二个数组中取出该项作为下一项推送:

      var array1 = [
      "item1",
      "item2",
      "item3",
      "item4"
      ];
      
      var array2 = [
      "choice1",
      "choice2",
      "choice3",
      "choice4"
      ];
      
      var res = [];
      array1.forEach((i,idx) =>{
        res.push(i);
        res.push(array2[idx]);
      });
      console.log(res);

      【讨论】:

        【解决方案4】:

        您可以遍历它们并将它们添加到数组中,并使用每个级别的元素的索引将它们添加到一个数组中:

        array1 = [
          "item1",
          "item2",
          "item3",
          "item4"
        ];
        
        array2 = [
          "choice1",
          "choice2",
          "choice3",
          "choice4"
        ];
        
        var result = [];
        
        for (var i = 0; i < array1.length; i++) {
          result.push(array1[i]);
          result.push(array2[i]);
        }
        
        console.log(result);

        【讨论】:

          【解决方案5】:

          你可以在这里使用push()方法,

          array1 = [
          "item1",
          "item2",
          "item3",
          "item4"
          ];
          
          array2 = [
          "choice1",
          "choice2",
          "choice3",
          "choice4"
          ];
          
          var FinalArray = [];
          for(var index = 0; index < array1.length; index++){
            FinalArray.push(array1[index]);
            FinalArray.push(array2[index]);
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-11-29
            • 2016-08-06
            • 2019-08-01
            • 2020-05-02
            • 2015-10-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多