TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) JavaScript
Posted
技术标签:
【中文标题】TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) JavaScript【英文标题】: 【发布时间】:2021-05-21 06:24:25 【问题描述】:我有以下代码:
//creates matrix and converts it to JSON file
var map = JSON.stringify(math.randomInt([10, 10],2));
//create instance of Map
const temp= new Map(_id: 2, map: map);
temp.save(function (err)
if (err) return handleError(err);
);
这将创建一个矩阵并将其放入 Map 集合中的我的 mongoDB 中,使用以下模型:
const mapSchema = new mongoose.Schema(
_id: Number,
map: Array
)
const Map = mongoose.model('Map', mapSchema)
这很好用。但我想把整个第一个 sn-p 放到一个函数中,所以我可以把它放在另一个文件中,将它导入到我的 index.js 中,然后运行这个函数。所以我在它周围放了一个函数,像这样:
const generateMap = function()
var map = JSON.stringify(math.randomInt([10, 10],2));
const temp = new Map(_id: 2, map: map);
temp.save(function (err)
if (err) return handleError(err);
);
;
我将函数导出到我的 index.js 文件并在那里运行该函数,但出现错误:
const temp= new Map(_id: 2, map: map);
^
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
有人可以帮我解决这个问题吗?
非常感谢
【问题讨论】:
【参考方案1】:在出现错误的情况下,您无意中使用了 javascript 的标准 Map
构造函数,而不是您自己的 Map
构造函数。如果您将参数传递给 JavaScript 的 Map
构造函数,则该参数必须是可迭代的。
所以解决方法是确保你的构造函数是你使用它的范围内的那个。
我强烈建议不要命名事物,以免它们与 JavaScript 标准库中的事物发生冲突。也许考虑调用您的构造函数XYZMap
,其中XYZ
可以识别它在您的架构中的含义。这样您就不会发生名称冲突,并且当您没有它在范围内时,您会得到一个更明显的错误。 (错误是ReferenceError: XYZMap is not defined
,希望能更清楚地说明发生了什么。)
【讨论】:
非常感谢。这就是问题所在。我是 JS 新手,不知道命名约定。以上是关于TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) JavaScript的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: 'method' object is not iterable
AngularFireList' TypeError: Object(...) is not a function at SwitchMapSubscriber.project
计算数字的变体 / TypeError: 'int' object is not callable
TypeError: Object(...) is not a function, 从 firebase 调用数据