3

現在、2つのアレイがあります

array1 = [5, 10, 20]
array2 = [10, 20, 30]

array3 または次のようなもの:

array4 = [{"a":5, "b":10}, {"a":10, "b":20}, {"a":20, "b":30}]

これはおそらく簡単な質問だと思いますが、どの array3 が呼び出されるのかさえわからないので、これをグーグルで検索するのは難しいです。

4

3 に答える 3

8

非常に単純です。最初に結果配列を作成し、次に最初の配列を反復処理して要素を追加します。これが実用的なフィドルです。

あなたのコードに{5,10}は、JavaScriptでは違法であるような表記法があることに注意してください。私はあなたが配列を意味すると仮定しました。

var result = [];
for(var i=0;i<array1.length;i++){
   result.push([array1[i],array2[i]]);
}

編集後に更新します。オブジェクトが必要なようです。試してみてください

var result = [];
for(var i=0;i<array1.length;i++){
   result.push({a:array1[i],b:array2[i]});//add object literal
}

map必要に応じて、同じコードを機能的に使用および記述することもできます。これがその種の実装のフィドルです

于 2013-03-21T19:49:30.577 に答える
2

これはzip...

function zip() {
    var args = [].slice.call(arguments);
    var shortest = args.length==0 ? [] : args.reduce(function(a,b){
        return a.length<b.length ? a : b
    });

    return shortest.map(function(_,i){
        return args.map(function(array){return array[i]})
    });
}

これらのユーティリティ関数の多くを備えた素晴らしいjsライブラリをアンダースコアにチェックしてください...

于 2013-03-21T19:51:15.233 に答える