我正在努力学习使用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((