簡體   English   中英

如何在JavaScript中合並兩個不同的數組?

[英]How to merge two different arrays in Javascript?

我有這個數組

var arr1 = [19, 1, 1, 1, 1];

還有另一個數組

var arr2 = ["Default", "Dynamic", "Assessment", "Risk", "Privacy"];

我想要以某種方式合並它們,以便看起來像這樣,

var merged_array = [ ["Default", 19], ["Dynamic", 1], ["Assessment", 1], ["Risk", 3], ["Privacy", 2] ];

我該怎么辦? 我嘗試join但沒有達到我想要的。 提前致謝!

如果您有jquery或同等學歷:

var merged_array = $.map(arr1, function(e, i) {
    return [arr2[i], e];
});

如果不是,則只使用for循環,相同的想法。

var merged_array = []
for (var i = 0; i < arr1.length && i < arr2.length; i++) {
    merged_array[i] = [arr2[i], arr1[i]];
}
var result = new Array();
for (var i=0; i<arr1 .length && i<arr2.length ; i++) {
    result[i] = new Array();
    result[i][0] = arr1[i];
    result[i][1] = arr2[i];
}

使用for循環:

var merged_array = new Array(arr1.length);
for (var i = 0; i < arr1.length; i++) {
  merged_array[i] = new Array(arr2[i], arr1[i]);
}

假設arr1和arr2的長度相同。

我可能會擴展array對象,尤其是在這是常見任務的情況下。 像這樣:

Array.prototype.myMerge = function(arr){
    var returnArr = [];
    for(var i = 0, len = this.length; i < len; i++){
        returnArr[i] = [this[i], arr[i]];
    }
    return returnArr;
};

那么您可以這樣稱呼它:

var merged_array = arr1.myMerge(arr2)

當然,您必須對數組的長度添加一些錯誤檢查,此函數假定arr1較長或與arr2相同。 但這取決於如果arr1和arr2的長度不同,您要做什么,您的問題似乎假設它們的長度相同。

如果包含庫underscore.js(prototype.js也具有類似內容),則可以使用_.zip(array1,array2)。 他們提供了3個陣列的示例用法。

http://underscorejs.org/#zip

zip_.zip(* arrays)將每個數組的值與對應位置的值合並在一起。 當您有單獨的數據源通過匹配的數組索引進行協調時很有用。 如果您使用的是嵌套數組矩陣,則zip.apply可以類似的方式轉置矩陣。

_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]);
=> [["moe", 30, true], ["larry", 40, false], ["curly", 50, false]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM