当需要javascript Collection.js时,javascript中的Array.from不起作用



我正在努力学习使用Array.from,因为我真的不喜欢调用fill然后映射

例如,我正在转换

const tasks = 3
const graph = Array(tasks).fill(0).map(() => Array())

进入

const graph = Array.from(Array(tasks), () => new Array())

但是我得到以下错误

graph[1].push(1)
^
TypeError: Cannot read property 'push' of undefined

我在另一个帖子上看到有人发布

var arr = Array.from(Array(2), () => new Array(4));
arr[0][0] = 'foo';
console.info(arr);

这也抛出

arr[0][0] = 'foo';
^
TypeError: Cannot set property '0' of undefined

逐行测试后,这条线似乎打破了

const Deque = require('collections/deque')

有什么想法吗https://www.collectionsjs.com破坏数组.from((行为?

正如人们在评论中所说,您的代码是有效的。我添加它只是为了包含这个代码片段,以便您可以自己查看。

我想问题在于您调用graph[1].push(1)的位置。我怀疑它是从某个无法访问graph的地方调用的。

下面给出的最低版本是有效的,所以你需要找到导致错误的代码的最低版本,你可能会在过程中找到答案

const tasks = 3
const graph = Array.from(Array(tasks), () => new Array())
graph[1].push(1);
console.log(graph)

如上所述,我的代码本身应该工作,但是collections.js中的某些东西破坏了array.from((

最新更新