当前位置: 首页 > 知识库问答 >
问题:

将ES6可迭代转换为数组

衡子安
2023-03-14

假设您有一个类似数组的Javascript ES6 Iterable,您事先知道它的长度是有限的,将其转换为Javascript数组的最佳方法是什么?

这样做的原因是许多js库(如underscore和lodash)仅支持数组,因此如果您希望在可迭代上使用它们的任何函数,则必须首先将其转换为Array。

python中,您可以只使用list()函数。ES6中是否有同等标准?

共有3个答案

慕容超
2023-03-14

您可以使用ES6中添加的Array.from方法,但只支持数组和可迭代对象,如地图和集合(ES6中也有)。对于常规对象,您可以使用下划线的toArray方法或洛达什的toArray方法,因为这两个库实际上都非常支持对象,而不仅仅是数组。如果您已经在使用下划线或洛达什,那么幸运的是,他们可以为您处理这个问题,同时为您的对象添加各种功能概念,如地图和减少。

李弘光
2023-03-14
    < li> Array.from()函数,它将iterable作为输入,并返回iterable的数组。 < li >展开语法:< code >...与数组文字结合使用。
const map = new Map([[ 1, 'one' ],[ 2, 'two' ]]);

const newArr1  = [ ...map  ];  // create an Array literal and use the spread syntax on it
const newArr2 = Array.from( map );  // 

console.log(newArr1, newArr2); 
云洋
2023-03-14

您可以使用Array。来自或传播语法(…)。

例:

const x = new Set([ 1, 2, 3, 4 ]);

const y = Array.from(x);
console.log(y); // = [ 1, 2, 3, 4 ]

const z = [ ...x ];
console.log(z); // = [ 1, 2, 3, 4 ]
 类似资料:
  • 问题内容: 如果我有一个包含字符串的可迭代对象,是否有一种简单的方法可以将其转换为流?我想做这样的事情: 问题答案: 这是我的流式迭代器,它是urllib3的实验分支,它支持通过可迭代的流式分块请求: 带有上下文的源代码:https : //github.com/shazow/urllib3/blob/filepost- stream/urllib3/filepost.py#L23 相关单元测试:

  • 我的linter建议我使用lambda表达式重构它,但我不知道如何对这段代码进行重构

  • 继承了一个iterator()方法来生成。 但我需要一个而不是。

  • 我正在寻找一种简洁的方法来将转换为或者更具体地说,将迭代器作为流“查看”。 出于性能原因,我希望避免在新列表中出现迭代器的副本: 基于评论中的一些建议,我还尝试使用: 但是,我得到一个(因为没有调用) 我查看了和,但没有找到任何东西。

  • 我有一个低效的递归硬币变化函数,它计算出给定数量的硬币组合数量。如果可能的话,我想把它转换成一个更有效的迭代函数。 一个问题是,我正在使用回溯来尝试一个叫做面额的数组中的不同硬币。我也在使用记忆法,但当数量很大时,它不会加快速度。 这是我的密码: 有什么想法可以做到这一点吗?我知道有解决硬币更换问题的DP解决方案,但我的解决方案并不容易。我可以有半个便士。 *更新:我将函数改为迭代函数,并将其放大