jQuery合并多个javascript数组值

时间:2012-04-25 05:35:22

标签: javascript arrays merge

我遇到过需要将两个不同数组的值合并为一个数组的情况。

My First数组值如下:

[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]]

感谢您的帮助。

感谢。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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++)