【发布时间】:2018-08-25 05:36:15
【问题描述】:
定义:创建一个由分组元素组成的数组,第一个包含给定数组的第一个元素,第二个包含给定数组的第二个元素,以此类推。
目前的解决方案:
const zip = (...arr) => {
let maxLength = 0
let res = []
for (let el of arr) {
maxLength = Math.max(maxLength, el.length)
}
for (let j = 0; j < maxLength; j++) {
const foo = []
for (let n of arr) {
foo.push(n[j])
}
res.push(foo)
}
return res
}
测试用例:
test(('zip', () => {
expect(zip([1, 2], [4, 5], [9, 1])).toEqual([[1, 4, 9], [2, 5, 1]])
}
test('zip', () => {
expect(zip([1, 2, 3], [4, 5, 6])).toEqual([[1, 4], [2, 5], [3, 6]])
})
test('zip', () => {
expect(zip([1, 2], [], [3, 4, 5])).toEqual([
[1, undefined, 3],
[2, undefined, 4],
[undefined, undefined, 5],
])
})
我想要一个更好的方法来实现 zip,目前的解决方案很丑
【问题讨论】:
-
欢迎来到 Stack Overflow!请查看tour,环顾四周,并通读help center,尤其是How do I ask a good question? 如果您需要在您的问题中添加代码(并且您确实这样做了),请使用“编辑”链接并正确格式化,请勿在评论中发布。另外,明确你的要求。代码有效吗?如果它不起作用,如何不起作用?您在调试它以使其工作时发现了什么?等等。
-
你有什么问题?
-
@Terry 如何用更好的方式制作 _lodash.zip
-
这不是一个好问题。您当前需要解决的问题是什么,为什么?你不能指望人们成为读心者;-)
-
@cbll 对不起,我已经更新了我的问题和描述
标签: javascript arrays ecmascript-6 lodash