文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Object.keys()、Object.values()、Object.entries()怎么使用

2023-07-05 23:32

关注

这篇文章主要介绍“Object.keys()、Object.values()、Object.entries()怎么使用”,在日常操作中,相信很多人在Object.keys()、Object.values()、Object.entries()怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Object.keys()、Object.values()、Object.entries()怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Object.keys()

一、官方解释

Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 。如果对象的键-值都不可枚举,那么将返回由键组成的数组。

二、语法

Object.keys(obj)
参数:要返回其枚举自身属性的对象
返回值:一个表示给定对象的所有可枚举属性的字符串数组

三、处理对象,返回可枚举的属性数组

            let person={                name:'一只流浪的kk',                age:20,                eat:function(){}            }            console.log(Object.keys(person));//    ['name','age','eat']

四、处理数组,返回索引值数组

 let arr=[1,2,3,4,5]; console.log(Object.keys(arr));//['0','1','2','3','4','5']

五、处理字符串,返回索引值数组

let str='hello';console.log(Object.keys(str));//['0','1','2','3','4']

六、实用技巧

 let person={                   name:'一只流浪的kk',                   age:18,                   eat:function(){                                          }           }           Object.keys(person).map((key)=>{                   person[key];//获得属性对应的值,可以进行其它处理           })

Object.values()

一、返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值

let obj = {    foo : "bar",    baz : 20};console.log(Object.values(obj));  // ["bar", 20]

二、返回数组的成员顺序,与属性的遍历部分介绍的排列规则一致

const obj = {100 : "a", 2 : "b", 7 : "c"};console.log(Object.values(obj));   //["b", "c", "a"]

三、Object.values()只会遍历对象自身的可遍历属性

const obj = Object.create({},{p : {value : 10}});console.log(Object.values(obj));    console.log(Object.getOwnPropertyDescriptors(obj)); // []

Object.create方法的第二个参数添加的对象属性(属性p),如果不显式声明,默认是不可遍历的,因为p的属性描述对象的enumerable默认是false,Object.values不会返回这个属性。
因此只要把enumerable改成true,Object.values就会返回属性p的值。

const obj = Object.create({},{p:{     value : 10,     enumerable : true,     configurable : true,     writable : true,}})console.log(Object.values(obj));    //[10]

四、Object.values会过滤属性名为 Symbol 值的属性

//如果Object.values方法的参数是一个字符串,会返回各个字符组成的一个数组。Object.values({ [Symbol()]: 123, foo: 'abc' });console.log(Object.values('foo'));  //["f", "o", "o"]

五、如果参数不是对象,Object.values会先将其转为对象

console.log(Object.values(42));  // []console.log(Object.values(true));  // []console.log(Object.values(undefined));   //errorconsole.log(Object.values(null));   //error

Object.entries()

一、Object.entries方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组

var obj = { foo: 'bar', baz: 42 };console.log(Object.entries(obj));

Object.keys()、Object.values()、Object.entries()怎么使用

二、如果原对象的属性名是一个 Symbol 值,该属性会被省略

console.log(Object.entries({ [Symbol()]: 123, foo: 'abc' }));  // [ [ 'foo', 'abc' ] ]

三、遍历对象的属性

let obj = {    one : 1,    two : 2,}for(let [k , v] of Object.entries(obj)){     console.log(`${JSON.stringify(k)} : ${JSON.stringify(v)}`);}

Object.keys()、Object.values()、Object.entries()怎么使用

四、将对象转为真正的Map结构

const obj = {foo : "bar", baz : 10};const map = new Map(Object.entries(obj));console.log(map);

Object.keys()、Object.values()、Object.entries()怎么使用

五、实现Object.entries方法

const entries = (obj) => {     let result = [];     const objType = typeof(obj);     if(obj === undefined || obj === null){          throw new TypeError();     }     if(objType === "number" || objType === "boolean"){         return [];     }     for(let k of Object.keys(obj)){         result.push([k,obj[k]]);     }     return result}

到此,关于“Object.keys()、Object.values()、Object.entries()怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯