1

私はjavascriptに2つの配列を持っています。

            var A = ['c++', 'java', 'c', 'c#', ...];
            var B = [12, 3, 4, 25, ...];

これらの2つの配列から、次のような別の配列を作成したいと思います:

  [['c++',12], ['java',3], ['c',4], ['c#', 25] ...];

A私の場合、配列と配列の両方Bが可変長なので、どうすればこれを行うことができますか?

4

4 に答える 4

3

Underscore.js is good at that:

_.zip(*arrays)

Merges together the values of each of the arrays with the values at the corresponding position. Useful when you have separate data sources that are coordinated through matching array indexes. If you're working with a matrix of nested arrays, zip.apply can transpose the matrix in a similar fashion.

_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]);
=> [["moe", 30, true], ["larry", 40, false], ["curly", 50, false]]
于 2012-07-11T10:11:35.950 に答える
3

サードパーティのライブラリを使用しない場合は、次のスニペットを使用できます。

var i = 0
  , n = A.length
  , C = [];

for (; i < n; i++) {
    C.push([A[i], B[i]]);
}
于 2012-07-11T10:13:43.497 に答える
1
function Merge(A,B){
    var length = Math.min(A.length,B.length);
    var result = [];
    for(var i=0;i<length;i++){
     result.push([ A[i], B[i] ]) 
    }

    return result;
}
于 2012-07-11T10:15:02.497 に答える
0

2 つの配列の代わりに hashMap を使用すると、適切な解決策になると思います。

たとえば、次のようなことができます。

var h = new Object(); // or just {}
h['c++'] = 12;
h['java'] = 3;
h['c'] = 4;

を見てみましょう:

http://www.mojavelinux.com/articles/javascript_hashes.html

于 2012-07-11T10:18:16.263 に答える