[Javascript] Iterate over Object
const [a, b] = {
a: 3,
b: 4,
};
console.log(a, b); // TypeError: {(intermediate value)(intermediate value)} is not iterable
How to make it work without touch original code?
We need to use [Symbol.iterator]
for Object.prototype
;
Object.prototype[Symbol.iterator] = function() {
const values = Object.values(this)
let index = 0
const len = values.length
return {
next() {
return {
value: values[index++],
done: index <= len ? false: true
}
}
}
}
const [a, b] = {
a: 3,
b: 4,
};
console.log(a, b);
We can improve this version by knowing const values = Object.values(this)
is already a iterable.
Object.prototype[Symbol.iterator] = function() {
const values = Object.values(this)
return values[Symbol.iterator]()
}
const [a, b] = {
a: 3,
b: 4,
};
console.log(a, b);
We can improve this version by using generator.
Object.prototype[Symbol.iterator] = function* () {
yield* Object.values(this);
};
const [a, b] = {
a: 3,
b: 4,
};
console.log(a, b);
分类:
Javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2023-11-06 [VM] Deopt code
2020-11-06 [Kotlin spring boot] Work with database
2018-11-06 [Tools] Convert SVG to a PDF in Node with PDFKit and SVG.js
2018-11-06 [Javascript] Cancel A Promise Using AbortController
2018-11-06 [Testing] JavaScript Mocking Fundamentals
2017-11-06 [React Native] Animate the Scale of a React Native Button using Animated.spring
2017-11-06 [React] Use the URL as the source of truth in React