0

2 つの異なる配列の値を 1 つの配列にマージする必要がある状況に遭遇しました。

私の最初の配列値は次のようなものです:

[35.3,35.3,35.3,35.3,35.2,33.8,29.8,21.5]

2 番目の配列の値は次のようになります。

[10,20,30,40,50,60,70,80]

結果の配列:

[[35.3,10],[35.3,20],[35.3,30],[35.4,40],[35.2,50],[33.8,60],[29.8,70],[21.5,80]]

あなたの助けに感謝。

ありがとう。

4

2 に答える 2

2

これは、等しい長さの配列に対する純粋な JavaScript の単純な関数です。

var a = [35.3,35.3,35.3,35.3,35.2,33.8,29.8,21.5];
var b = [10,20,30,40,50,60,70,80];

function merge(a, b) {
    if (a.length == b.length) {
        var c = [];
        for (var i = 0; i < a.length; i++) {
            c.push([a[i], b[i]]);
        }
        return c;
    }
    return null;
}

var c = merge(a, b);
于 2012-04-25T05:45:51.353 に答える
0

すでにライブラリを使用したいので、別のライブラリを使用することをお勧めします (jQuery は、そのような非 DOM 関連のもののためのツールではありません)。

http://documentcloud.github.com/underscore/#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]]

配列のサイズは同じなので、これを行う単純な関数を次に示します。

function zip(arr1, arr2) {
    var arr = new Array(arr1.length);
    for(var i = 0; i < arr1.length; i++) {
        arr.push([arr1[i], arr2[i]]);
    }
    return arr;
}

最短の配列を取得し、他の配列の追加要素を無視するには:

for(var i = 0, len = Math.min(arr1.length, arr2.length); i < len; i++)
于 2012-04-25T05:39:15.703 に答える