首页 > 其他分享 >Object — Object.keys()

Object — Object.keys()

时间:2024-02-22 16:45:42浏览次数:22  
标签:keys Object 对象 数组 方法 属性

Object.keys() 是 JavaScript 中的一个内置方法,用于返回一个由指定对象的所有可枚举属性的键组成的数组。

Object.keys() 方法会遍历目标对象的可枚举属性(不包括继承的属性),并返回一个数组,该数组包含了这些属性的键。

 1 // (1)数组Array对象(返回索引值)
 2 let arr = ['1','2','3']
 3 console.log(Object.keys(arr))  //  ["0", "1", "2”]
 4 
 5 // (2)object对象(返回key值)
 6 let obj = {
 7     a : '1',
 8     b : '2',
 9     c : '3',
10 }
11 console.log(Object.keys(obj))  //  ['a', 'b', 'c']
12 
13 // (3)类数组,对象
14 let object = {
15     0 : 'a',
16     1 : 'b',
17     2 : 'c'
18 }
19 console.log(Object.keys(object)) // ['0', '1', '2']
20 
21 // (4)类数组对象 随机key排序
22 let obj2 = {
23     99 : 'a',
24     7 : 'b',
25     78 : 'c'
26 }
27 console.log(Object.keys(obj2)) // ['7', '78', '99']

Object.keys() 的工作原理:

1.首先,它检查传入的参数是否为对象。如果参数不是对象,则会抛出 TypeError

2.然后,它创建一个空数组,用于存储属性的键。

3.接下来,它遍历对象的可枚举属性,对每个属性执行以下操作:将属性的键添加到数组中。

4.最后,它返回包含属性键的数组。

需要注意的是,Object.keys() 只返回对象自身的可枚举属性的键,不包括继承的属性和不可枚举的属性。如果需要获取所有属性的键(包括继承的属性和不可枚举的属性),可以使用 for...in 循环或 Object.getOwnPropertyNames() 方法。

 

Object.keys() 方法在实际开发中有许多常见的使用场景,以下是一些常见的应用场景:

  1. 遍历对象属性:通过将 Object.keys()forEachmap 等数组方法结合使用,可以方便地遍历对象的所有属性。

  2. 获取对象属性数量:通过获取返回数组的长度,可以快速获取对象包含的属性数量。

  3. 检查对象是否包含特定属性:通过使用 Array.prototype.includes()indexOf() 方法,可以轻松检查对象是否包含特定属性。

  4. 对象属性过滤:可以使用 Object.keys() 方法结合 filter 方法,快速过滤对象的属性。

  5. 对象属性映射:结合 map 方法,可以对对象的属性进行映射操作,生成新的属性数组。

  6. 将对象属性转换为数组:通过 Object.keys() 方法可以将对象的键转换为一个数组,方便后续处理。

  7. 对象属性排序:可以使用 Object.keys() 方法获取对象的属性键数组,并对其进行排序操作。

  8. 对象属性比较:可以使用 Object.keys() 方法获取两个对象的属性数组,然后进行比较操作。

 

总的来说,Object.keys() 方法非常实用,可以帮助开发人员方便地处理对象的属性,提高代码的可读性和可维护性。在需要操作对象属性时,特别是在需要动态处理对象属性时,Object.keys() 是一个非常有用的工具。

标签:keys,Object,对象,数组,方法,属性
From: https://www.cnblogs.com/qinlinkun/p/18027653

相关文章

  • Object — Object.is()
    Object.is()方法通常用于需要进行严格相等比较的场景,特别是在处理一些特殊值时更为实用。以下是一些适合使用Object.is()的场景:1//(1)比较字符串2letstr='1'3letstr1='1'45console.log(Object.is(str,str1))//true6console.log(Object.is('str','st......
  • Vue学习笔记9--Object.defineProperty()
    Object.defineProperty()语法说明Object.defineProperty()的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性obj需要定义属性的当前对象Object.defineProperty(obj,prop,desc)==》obj需要定义属性的当前对象prop当前需要定义的属性名desc属性描述......
  • Object方法 — Object.entries()
    Object方法—Object.entries()Object.entries()方法是JavaScript中的一个静态方法,用于返回一个给定对象自身可枚举属性的键值对数组。该方法接受一个对象作为参数,并将该对象的可枚举属性转换为一个二维数组,其中每个子数组包含两个元素:属性的键和属性的值。返回的数组中的......
  • TCL学习:First Class Tcl Objects and Relationships
    前言:最近需要移植vivado工程到新板卡上。之前只学了基础TCL语法,复杂一点的指令看博客看文档对陌生名词挠头。才发现官方文档VivadoDesignSuiteTclCommandReferenceGuide(UG835)第一章的FirstClassTclObjectsandRelationships对Vivado用到的TCL的指令做了很好的知识铺......
  • import { flattenKeys } from '.'; 是从哪里导入的flattenKeys
    import{flattenKeys}from'.';这行代码是从当前目录(currentdirectory)导入名为flattenKeys的函数或变量。在Node.js项目中,.表示当前目录的入口文件,通常是index.js或者与当前文件在同一目录下的其他导出模块。这意味着你在这个项目的某个文件夹内有一个文件(例如index.......
  • HarmonyOS—@Observed装饰器和@ObjectLink嵌套类对象属性变化
    @Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化概述@ObjectLink和@Observed类装饰器用于在涉及嵌套对象或数组的场景中进行双向数据同步:被@Observed装饰的类,可以被观察到属性的变化;子组件中@ObjectLink装饰器装饰的状态变量用于接收@Observed装饰的类的实例,和父组件......
  • kotlin--Object关键字
    1.匿名内部类Object可以实现,继承一个抽象类的同时,实现多个接口。interfaceA{funfunA()}interfaceB{funfunB()}abstractclassMan{abstractfunfindMan()}funmain(){//这个匿名内部类,在继承了Man类的同时,还实现了A、B两个接口......
  • Qt error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const
    简介  通过QtCreator开发一个动态库,最开始希望只是一个简单的纯C++的动态库,就没有继承QObject,也没有写Q_OBJECT宏。编译时就会报:LNK2001:无法解析的外部符号public:virtualstructQMetaObjectconst。绕了不少弯子,终于解决了,把原因分析进行个整理。面试有个问题:Qt信号槽机......
  • Qt error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const
    这个问题总是在编译的不经意间出现,而且一出一大片,很烦。作为新手出了问题可定要在网上找答案,但是总是发现别人的解决方法解决不了自己的问题,唉~在这个问题上大家大家提出的大多数是.h.cpp文件不对应、.h中声明的文件在.cpp文件中没有实现、函数声明在了.cpp文件中等等一......
  • Unity 2022.3.20f1新功能,异步实例化预制体Object.InstantiateAsync
    今天查看Unity2022.3.20f1更新日志,发现新增了个异步实例化的功能,这个功能解决了Unity历史上实例化预制体卡顿的痛点,简直不要太爽。具体的API文档请点击跳转。做了个简单的实例化测试,实例化500*500个Cube,耗时9.2s。实例化过程之间不会卡顿,可以做其他事情,即便是在重度游戏加载场......