在Javascript中组合数组

时间:2011-03-05 23:59:59

标签: javascript arrays

也许在德国太晚了(凌晨1点04分)或者我错过了什么......

如何组合这两个数组:

a = [1, 2, 3] and b = [a, b, c] so that i get: [[1, a], [2, b], [3, c]]

谢谢......花更多时间睡觉! :)

编辑:

我看到这个函数叫做“zip”。 +1知识

此JavaScript中没有内置函数。 +1知识

我应该说数组的长度相等。 -1知识

4 个答案:

答案 0 :(得分:4)

Array.prototype.zip = function(other) {
    if (!Array.prototype.isPrototypeOf(other)) {
         // Are you lenient?
         // return [];
         // or strict?
         throw new TypeError('Expecting an array dummy!');
    }
    if (this.length !== other.length) {
         // Do you care if some undefined values
         // make it into the result?
         throw new Error('Must be the same length!');
    }
    var r = [];
    for (var i = 0, length = this.length; i < length; i++) {
        r.push([this[i], other[i]]);    
    }
    return r;
}

答案 1 :(得分:3)

假设两者的长度相等:

var c = [];

for (var i = 0; i < a.length; i++) {
    c.push([a[i], b[i]]);
}

答案 2 :(得分:1)

您可能需要检查包含许多所需实用程序功能的underscore.js。在你的情况下函数* _。zip()*

_.zip([1, 2, 3], [a, b, c]);

结果为:

[[1, a], [2, b], [3, c]]

答案 3 :(得分:0)

在ES6中,我们可以使用.map()方法压缩两个数组(假设两个数组的长度相等):

let a = [1, 2, 3],
    b = ['a', 'b', 'c'];
    
let zip = (a1, a2) => a1.map((v, i) => [v, a2[i]]);

console.log(zip(a, b));
.as-console-wrapper { max-height: 100% !important; top: 0; }