也许在德国太晚了(凌晨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知识
答案 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; }