首页 > 编程语言 >[Javascript] Iterate over Object

[Javascript] Iterate over Object

时间:2024-11-06 15:47:52浏览次数:1  
标签:Object const iterator over Javascript values Iterate prototype Symbol

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);

 

标签:Object,const,iterator,over,Javascript,values,Iterate,prototype,Symbol
From: https://www.cnblogs.com/Answer1215/p/18530370

相关文章

  • 深入理解JavaScript中的闭包
    写在前面在JavaScript中,闭包是一个强大的概念,它允许我们创建私有变量和函数,并在需要时访问它们。虽然闭包可能看起来有些神秘,但实际上它是基于JavaScript的词法作用域和函数的特性。理解闭包对于编写高效、可维护的JavaScript代码至关重要。什么是闭包?闭包是指一个函数能......
  • 基于JavaScript的关键词过滤示例
    业务场景中,合作第三方的的各种AI内容审核模型,完全达不到满意的状态,奇怪这么简单的一个东西,有这么复杂吗,自己动手来一个DEMO,给开发,仅供参考。<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-wi......
  • JavaScript的对象事件监听处理,交互式网页的关键!
    目录一、对象的事件二、常用的事件及处理1、鼠标事件(1) mousedown事件(2) mouseup事件(3) click事件(4)dblclick事件(5)mouseenter事件(6)mouseleave事件(7)wheel事件2、键盘事件(1)keydown事件(2)keyup事件3、表单事件(1)概念 (2)先设置一个简单的表单(3)获取表单节点(4)添加表......
  • JavaScript用法
    JavaScript 用法HTML中的Javascript脚本代码必须位于 <script> 与 </script> 标签之间。Javascript脚本代码可被放置在HTML页面的 <body> 和 <head> 部分中。<script>标签如需在HTML页面中插入JavaScript,请使用<script>标签。<script>和</script>......
  • javascript跨域问题排查
    什么是跨域问题跨域是指浏览器从一个域名的网页去请求另一个域名下的资源。出于安全考虑,浏览器会限制这种跨域请求。例如,网页http://example1.com中的JavaScript代码尝试去获取http://example2.com的数据,这就会触发跨域问题。同源策略规定,只有当协议(如http、https)、域名(如ex......
  • Javascript 代码规范
    JavaScript代码规范是编程时遵循的一套规则和最佳实践,以确保代码的可读性、可维护性和一致性。以下是一些关键的JavaScript常见代码规范:1.使用严格模式在所有脚本文件或函数开头添加‘usestrict’;声明,以启用严格模式(strictmode),这有助于捕获潜在的错误并避免不明......
  • 我不知道的Javascript
    Javascript数据类型基本数据类型(存放在栈内存中,当被引用和拷贝时会复制一个完全相等的变量)Number,String,Boolean,Symbol,Undefined,Null引用数据类型(对象类型,存放在堆内存中,存储的是地址,当引用和拷贝时,提供的是地址.有共享地址的特征)ObjectArrayRe......
  • 第二章 JavaScript操作BOM对象与DOM对象
    一、BOM对象1.BOM模型BOM:浏览器对象模型(BrowserObjectModel)BOM提供了独立于内容的、可以与浏览器窗口进行互动的对象结构BOM可实现功能弹出新的浏览器窗口移动、关闭浏览器窗口以及调整窗口的大小页面的前进、后退2.window对象属性属性名称说明history有关客户......
  • 【JavaScript进阶部分——DOM操作 (节点获取,节点属性修改,节点创建与插入,CSS样式的修改)
    ‌DOM操作‌是指对文档对象模型(DocumentObjectModel,简称DOM)进行增删改查等操作的过程。DOM是一种表示和操作HTML、XML等文档的标准编程接口,它将文档解析为一个由节点和对象(包含属性和方法)组成的集合,开发者可以通过DOM提供的接口来访问和操作文档的各个部分,包括元素、属性、文......
  • 2024/11/4日 日志 关于JavaScript 变量、数据类型、类型转换和流程控制语句的学习
    经过两天的休憩,状态更佳,后面的笔记和学习进度也会加快JavaScript变量、数据类型、类型转换和流程控制语句点击查看代码----变量--JavaScript中用var关键字(variable的缩写)来声明变量--vartest=20;--test="张三":--·JavaScript是一门弱类型语言变量可......