2

私はこの配列を持っています、

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ましたが、私が望むものを達成しませんでした。前もって感謝します!

4

5 に答える 5

1

If you have jquery or equivalent:

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

If not, then just use a for loop, same idea.

var merged_array = []
for (var i = 0; i < arr1.length && i < arr2.length; i++) {
    merged_array[i] = [arr2[i], arr1[i]];
}
于 2013-01-17T22:11:03.947 に答える
1

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の長さが異なる場合に何をしたいかによって異なります。あなたの質問は、それらが同じ長さであると想定しているようです。

于 2013-01-17T22:15:07.927 に答える
1

ライブラリ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]]
于 2013-01-17T22:24:30.427 に答える
1
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];
}
于 2013-01-17T22:11:58.447 に答える
1

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 が同じ長さであることを前提としています。

于 2013-01-17T22:12:35.887 に答える