javascript - Lazy.js:使用范围进行压缩

标签 javascript lazy.js

我想将计数与数组压缩在一起。看起来这样的事情是最优雅的方式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() 生成 生成序列

对于一个专为懒惰而设计的库来说,这似乎有点不直观。

我想你可以做类似的事情

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]);

--

[0] http://danieltao.com/lazy.js/docs/#Sequence-zip

[1] https://github.com/dtao/lazy.js/issues/87

关于javascript - Lazy.js:使用范围进行压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34352329/

相关文章:

javascript - 英雄库 : how to get the envPort on other js files

javascript - CSV 格式到带有运行总计的对象数组

javascript - Immutable.js或Lazy.js是否执行捷径融合?

javascript - 为什么箭头函数隐含的 `return` 在这种情况下不起作用(TS)?

javascript - 如何在javascript中处理大数字

javascript - 访问 IIFE 函数变量

javascript - 无限滚动,动态数据按上次修改状态排序