1

我在 javascript 中有 2 个数组。

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

现在从这两个数组中,我想创建另一个数组,例如:

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

A和数组在我的情况下都是B可变长度的,所以我该怎么做?

4

4 回答 4

3

Underscore.js擅长于此:

_.zip(*arrays)

将每个数组的值与相应位置的值合并在一起。当您有通过匹配数组索引进行协调的单独数据源时很有用。如果您正在使用嵌套数组的矩阵,则 zip.apply 可以以类似的方式转置矩阵。

_.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

我认为使用 hashMap 而不是 2 个数组可能是一个很好的解决方案。

例如,您可以执行以下操作:

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 回答