【问题标题】:Merge two arrays , So that both 1st index is in new array and so on合并两个数组,使第一个索引都在新数组中,依此类推
【发布时间】:2017-07-19 17:25:35
【问题描述】:

我有两个这样的数组

第一个数组是

array1[
0:"7@a.com"
1:"6@live.com"
2:"5@live.com"
3:"55@a.com"
4:"4@live.com"
5:"3@live.com"
6:"62@a.com"
7:"61@a.com"
8:"61@a.com"
9:"59@a.com"
10:"58@a.com"

并以同样的方式排列两个

0"5223b14d-1682-4777-8ada-c5b0c972756f"
1:"290c79e8-62da-46f1-bff5-157031a079fa"
2:"eb4ff5f9-82c7-4095-8116-1c34f1755d06"
3:"987c51f4-23f1-4783-8061-a47dfff16fe3"
4:"afcf5ef1-a87d-465f-bb1b-f8db81ecc178"
5:"2d299d60-9481-4c3f-9b9b-e6659ee74d07"
6:"1f40b5ef-990f-4edd-925c-b511dd64899f"
7:"88de17fd-286f-4960-9e4f-a2b01425da82"
8:"1bb181cb-ab7c-47af-95a6-99357459e6a3"
9:"9554f7c2-a20d-4ff7-add6-8840b2d06a89"
10:"15e51955-9eb9-4c4b-990f-97e29820e04d"

现在我想创建 10 个新数组,其中包含两者的索引组合,例如

newarray=[array1[0],array2[0]];

我得到了算法,但不知道如何在两者上循环。正如我尝试的那样,但只得到了两者的说法。我在 stak 溢出上尝试了 3,4 解决方案,但对我没有用。

【问题讨论】:

    标签: javascript jquery arrays loops


    【解决方案1】:

    如果数组长度相等,您可以使用map() 方法循环其中一个并返回包含两个元素的自定义数组:

    var results = arr1.map(function(el, index){
        return [el, arr2[index]];
    });
    

    演示:

    var arr1 = ["7@a.com","6@live.com","5@live.com","55@a.com","4@live.com","3@live.com","62@a.com","61@a.com","61@a.com","59@a.com","58@a.com"];
    
        var arr2 = ["5223b14d-1682-4777-8ada-c5b0c972756f","290c79e8-62da-46f1-bff5-157031a079fa","eb4ff5f9-82c7-4095-8116-1c34f1755d06","987c51f4-23f1-4783-8061-a47dfff16fe3","afcf5ef1-a87d-465f-bb1b-f8db81ecc178","2d299d60-9481-4c3f-9b9b-e6659ee74d07","1f40b5ef-990f-4edd-925c-b511dd64899f","88de17fd-286f-4960-9e4f-a2b01425da82","1bb181cb-ab7c-47af-95a6-99357459e6a3","9554f7c2-a20d-4ff7-add6-8840b2d06a89","15e51955-9eb9-4c4b-990f-97e29820e04d"];
        
    var results = arr1.map(function(el, index){
        return [el, arr2[index]];
    });
        
    console.log(results)

    【讨论】:

    【解决方案2】:

    您可以将它们映射成成对的值:

    var array1 = ["7@a.com","6@live.com","5@live.com","55@a.com","4@live.com","3@live.com","62@a.com","61@a.com","61@a.com","59@a.com","58@a.com"];
    
    var array2 = ["5223b14d-1682-4777-8ada-c5b0c972756f","290c79e8-62da-46f1-bff5-157031a079fa","eb4ff5f9-82c7-4095-8116-1c34f1755d06","987c51f4-23f1-4783-8061-a47dfff16fe3","afcf5ef1-a87d-465f-bb1b-f8db81ecc178","2d299d60-9481-4c3f-9b9b-e6659ee74d07","1f40b5ef-990f-4edd-925c-b511dd64899f","88de17fd-286f-4960-9e4f-a2b01425da82","1bb181cb-ab7c-47af-95a6-99357459e6a3","9554f7c2-a20d-4ff7-add6-8840b2d06a89","15e51955-9eb9-4c4b-990f-97e29820e04d"];
    
    var result = array1.map(function(v1, i) {
      return [v1, array2[i]];
    });
    
    console.log(result);

    【讨论】:

    • 这里的 v1 是什么?
    • array1 中的值。
    • 我想制作新数组,但它没有制作两个组合的新数组
    • Droi 我需要 10 个数组,每个数组有 2 个值
    • 我已经用@Jarek 解决方案完成了。您的代码也能正常工作,谢谢。所以给你点赞/
    【解决方案3】:

    array1 = [ "7@a.com", "6@live.com", "5@live.com", "55@a.com", "4@live.com", "3@live.com", "62@a.com", "61@a.com", "61@a.com", "59@a.com", "58@a.com"]; array2 = [
    "5223b14d-1682-4777-8ada-c5b0c972756f", "290c79e8-62da-46f1-bff5-157031a079fa", "eb4ff5f9-82c7-4095-8116-1c34f1755d06", "987c51f4-23f1-4783-8061-a47dfff16fe3", "afcf5ef1-a87d-465f-bb1b-f8db81ecc178", "2d299d60-9481-4c3f-9b9b-e6659ee74d07", "1f40b5ef-990f-4edd-925c-b511dd64899f", "88de17fd-286f-4960-9e4f-a2b01425da82", "1bb181cb-ab7c-47af-95a6-99357459e6a3", "9554f7c2-a20d-4ff7-add6-8840b2d06a89", "15e51955-9eb9-4c4b-990f-97e29820e04d"];
    
    var newArray = [];
    for (var i=0; i<array1.length; i++)
        newArray.push([ array1[i], array2[i]]);
    console.log( newArray );

    【讨论】:

    • 谢谢@jarek Kulikowski 我做到了 :) 非常感谢。 3分钟后接受;)
    • 数组 + 循环 + 推送每个元素/索引 -> Array.prototype.map()
    • @ephemeral 我的荣幸 :)。
    • @Andreas 你是什么意思?
    • @ephemeral 该构造(创建一个数组,循环另一个数组并推送新创建的数组中每个元素的修改版本)可以替换为.map()(就像在 chsdk 的答案中一样和奥里)
    猜你喜欢
    • 2022-11-12
    • 2012-02-11
    • 2022-11-16
    • 2012-03-21
    • 2012-03-31
    • 2015-02-21
    • 2017-12-14
    • 2021-12-19
    • 2012-01-23
    相关资源
    最近更新 更多