0

我遇到了一种情况,我需要将两个不同数组中的值合并到一个数组中。

我的第一个数组值如下:

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

第二个数组值如下:

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