【问题标题】:How to merge/combine two arrays in Javascript [duplicate]如何在Javascript中合并/组合两个数组[重复]
【发布时间】:2018-03-23 14:25:32
【问题描述】:

如何按此顺序合并或组合两个数组。

var list1 = ["A", "B", "C"];
var list2 = ["X", "Y", "Z"];

 var i = 0;
 for (i = 0; i < list1.length && list2.length; i++) {
     var list3[i] = list1[i] + list2[i];
 }

最终的结果是。

var list3 = ["AX", "BY", "CZ"];

【问题讨论】:

  • 我猜你已经有了正确的答案,对吧?
  • 使用地图功能
  • 如果数组长度不等怎么办?
  • @LuisfelipeDejesusMunoz,如果他需要支持旧浏览器,map 将无法与 IE8 及以下版本一起使用。
  • @Rodrigo 这将是一个非常奇怪的情况(IE

标签: javascript arrays loops


【解决方案1】:

你可以像这样使用map()

let list1 = ["A", "B", "C"];
let list2 = ["X", "Y", "Z"];

let result = list1.map((c, i) => c + list2[i]);

console.log(result);

你也可以使用模板字面量:

let list1 = ["A", "B", "C"];
let list2 = ["X", "Y", "Z"];

let result = list1.map((c, i) => `${c}${list2[i]}`);

console.log(result);

有用的资源:

【讨论】:

    【解决方案2】:

    如果长度相同,您可以使用map() 方法。

    var list1 = ["A", "B", "C"];
    var list2 = ["X", "Y", "Z"];
    
    const merged = list1.map((e, i) => e + list2[i]);
    console.log(merged)

    【讨论】:

      【解决方案3】:

      您的代码运行良好,只需要在循环之前声明list3 而不是在循环内部

      var list1 = ["A", "B", "C"];
      var list2 = ["X", "Y", "Z"];
      
      var i = 0;
      var list3 = []; //observe this line here
      for (i = 0; i < list1.length && list2.length; i++) {
           list3[i] = list1[i] + list2[i]; //var is removed
      }
      

      编辑

      同时观察for循环条件的变化

      for (i = 0; i < list1.length && i < list2.length; i++) { // i needs to be less than list2.length as well
           list3[i] = list1[i] + list2[i]; //var is removed
      }
      

      注意

      • 以上代码将确保list3 的长度为Math.min (list1.length , list2.length)

      【讨论】:

        【解决方案4】:

        你快到了:

        var list1 = ['A', 'B', 'C'];
        var list2 = ['X', 'Y', 'Z'];
        var list3 = [];
        
        for (var i = 0; i < list1.length; ++i) {
          list3[i] = list1[i] + list2[i];
        }
        

        在循环外声明list3。由于两个列表的大小相同,因此您只需检查一个。

        【讨论】:

          【解决方案5】:

          语法问题:

          1. list3 声明为空数组。
          2. 不要使用var重新声明。

          var list1 = ["A", "B", "C"];
          var list2 = ["X", "Y", "Z"];
          var list3 = [];
          var i = 0;
          for (i = 0; i < list1.length; i++) {
            list3[i] = list1[i] + list2[i];
          }
          console.log(list3);

          【讨论】:

            【解决方案6】:

            需要提前声明list3,并用空数组初始化。

            并且您需要检查索引是否小于list2 的长度,以便仅获取相同索引处的值作为结果。

            var list1 = ["A", "B", "C"],
                list2 = ["X", "Y", "Z"],
                list3 = [],
                i = 0;
                
            for (i = 0; i < list1.length && i < list2.length; i++) {
                list3[i] = list1[i] + list2[i];
            }
            
            console.log(list3);

            【讨论】:

              【解决方案7】:

              您可以使用函数map

              var list1 = ["A", "B", "C"];
              var list2 = ["X", "Y", "Z"];
              
              var result = list1.map((e, i) => e + list2[i])
              
              console.log(result);
              .as-console-wrapper { max-height: 100% !important; top: 0; }

              或者,您可以concat 数组,检查长度,然后连接元素:

              var list1 = ["A", "B", "C"],
                  list2 = ["X", "Y", "Z"],
                  jump = list1.length, 
                  result = [],
                  arr = list1.concat(list2);
                  
              for (var i = 0; i < jump; i++) result.push(arr[i] + arr[i + jump]);
              console.log(result);
              .as-console-wrapper { max-height: 100% !important; top: 0; }

              【讨论】:

                猜你喜欢
                • 2018-09-10
                • 2019-11-10
                • 2010-12-07
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多