Lazy.js:压缩范围
Lazy.js: zipping with a range
我想将计数与数组压缩在一起。这似乎是最优雅的做法 Lazy([...]).zip(Lazy.range(1, Infinity))
。但它不会产生我期望的结果。这是一个单元测试:
var assert = require('assert');
var Lazy = require('lazy.js');
describe('Lazy', () => {
describe('#zip()', () => {
it('can zip with infinite range', () => {
assert.deepEqual([['a', 1], ['b', 2]],
Lazy(['a', 'b']).zip(Lazy.range(1, Infinity)).toArray());
});
});
});
失败并出现以下错误:
AssertionError: [ [ 'a', 'b' ], [ 1, 2 ] ] deepEqual [ [ 'a', undefined ], [ 'b', undefined ] ]
好像Lazy.zip
只接受Array
参数[0][1],而Lazy.range()
产生一个GeneratedSequence
.
在专为懒惰而设计的库中,这似乎有点不直观。
我想你可以做类似的事情
Lazy(arr).zip(Lazy.range(1, arr.length + 1).toArray()).toArray()
顺便说一句,zip
应该产生 [['a', 1], ['b', 2]]
,而不是 [['a', 'b'], [1, 2]]
,除非我弄错了,否则这就是您当前正在测试的内容。
编辑:既然你最后要转换成数组,你有没有考虑过只使用原生的Array.map
?
arr.map((x, i) => [x, i + 1]);
--
我想将计数与数组压缩在一起。这似乎是最优雅的做法 Lazy([...]).zip(Lazy.range(1, Infinity))
。但它不会产生我期望的结果。这是一个单元测试:
var assert = require('assert');
var Lazy = require('lazy.js');
describe('Lazy', () => {
describe('#zip()', () => {
it('can zip with infinite range', () => {
assert.deepEqual([['a', 1], ['b', 2]],
Lazy(['a', 'b']).zip(Lazy.range(1, Infinity)).toArray());
});
});
});
失败并出现以下错误:
AssertionError: [ [ 'a', 'b' ], [ 1, 2 ] ] deepEqual [ [ 'a', undefined ], [ 'b', undefined ] ]
好像Lazy.zip
只接受Array
参数[0][1],而Lazy.range()
产生一个GeneratedSequence
.
在专为懒惰而设计的库中,这似乎有点不直观。
我想你可以做类似的事情
Lazy(arr).zip(Lazy.range(1, arr.length + 1).toArray()).toArray()
顺便说一句,zip
应该产生 [['a', 1], ['b', 2]]
,而不是 [['a', 'b'], [1, 2]]
,除非我弄错了,否则这就是您当前正在测试的内容。
编辑:既然你最后要转换成数组,你有没有考虑过只使用原生的Array.map
?
arr.map((x, i) => [x, i + 1]);
--