(详解)Object.keys() Object.values() Object.entries()

这篇具有很好参考价值的文章主要介绍了(详解)Object.keys() Object.values() Object.entries()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Object.keys(obj)

 二、Object.values()

三、Object.entries()


一、Object.keys(obj)

  • 参数:要返回其枚举自身属性的对象
  • 返回值:一个表示给定对象的所有可枚举属性的字符串数组
  1. 处理对象,返回可枚举的属性数组
let person = {name:"张三",age:25,address:"深圳",getName:function(){}};
console.log(Object.keys(person));

(详解)Object.keys() Object.values() Object.entries()

        2.处理数组,返回索引值数组

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

        3.处理字符串,返回索引值数组

let str = "abc";
console.log(Object.keys(str));  // ["0", "1", "2"]

        4.常用技巧

let person = {name:"张三",age:25,address:"深圳",getName:function(){}};
Object.keys(person).map((key)=>{
    console.log(person[key]);  // 获取到属性对应的值,做一些处理
})

(详解)Object.keys() Object.values() Object.entries()

 二、Object.values()

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

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

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

const obj = {100 : "a", 2 : "b", 7 : "c"};
console.log(Object.values(obj));   //["b", "c", "a"]
  • 属性名为数值的属性,是按照数值大小,从小到大遍历的,因此返回的顺序是b、c、a。

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

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

(详解)Object.keys() Object.values() Object.entries()

  • 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]

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

//如果Object.values方法的参数是一个字符串,会返回各个字符组成的一个数组。
Object.values({ [Symbol()]: 123, foo: 'abc' });
console.log(Object.values('foo'));  //["f", "o", "o"]
  • 字符串会先转成一个类似数组的对象,字符串的每个字符,就是该对象的一个属性。因此,Object.values返回每个属性的键值,就是各个字符组成的一个数组

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

console.log(Object.values(42));  // []
console.log(Object.values(true));  // []
console.log(Object.values(undefined));   //error
console.log(Object.values(null));   //error
  • 由于数值和布尔值的包装对象,都不会为实例添加非继承的属性,因此Object.values会返回空数组。

三、Object.entries()

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

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

 (详解)Object.keys() Object.values() Object.entries()

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

console.log(Object.entries({ [Symbol()]: 123, foo: 'abc' }));  // [ [ 'foo', 'abc' ] ]
  • 原对象有两个属性,Object.entries只输出属性名非 Symbol 值的属性。

3.遍历对象的属性

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

4.将对象转为真正的Map结构

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

 (详解)Object.keys() Object.values() Object.entries()

5.实现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
}

 文章来源地址https://www.toymoban.com/news/detail-440600.html

到了这里,关于(详解)Object.keys() Object.values() Object.entries()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql报错:Duplicate entry ‘...‘ for key ‘field‘

    错误信息 \\\"Duplicate entry \\\'...\\\' for key \\\'field\\\'\\\" 表示在数据库表中,你正在尝试插入一条数据的\\\'number\\\'字段的值已经存在。这通常是由于你设置了\\\'field\\\'字段为唯一键(UNIQUE KEY),而你又尝试插入一个已存在的值。 解决这个问题的方法有以下几种: 检查输入的数据 :确保你插入的数

    2024年02月06日
    浏览(42)
  • mysql 报错 Duplicate entry ‘xxx‘ for key ‘字段名‘

    有时候对表进行操作,例如加唯一键,或者插入数据(已经有唯一键),会报错 Duplicate entry...for key... 原因是primary key(主键)或unique key(唯一键)的值重复。 还有索引也会导致。 碰到这种情况,考虑是否需要主键或唯一键的约束,如果不需要,就直接删除约束。 在navica

    2024年02月12日
    浏览(55)
  • 报错Duplicate entry ‘值‘ for key ‘字段名‘的解决解决方法

    遇到这种问题, 是你的数据库表那个字段设置了唯一索引。所以这个字段新增的数据不能重复。具体可以打开表,然后点击表设置,具体教程可以看下文章最后 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry \\\'测试\\\' for key \\\'teacher.uk_name\\\'     at

    2023年04月13日
    浏览(55)
  • Duplicate entry ‘XXX‘ for key ‘XXX.PRIMARY‘解决方案。

    今天在插入数据时,出现一个错误 网上查看说是主键冲突了,但是查看数据库并没有,把所有数据清空,或者把表删了之后,在重新建也还是报同样的错。 … … … 最后的结果方案: 方案一:设置主键自增,适合主键为int类型(我的主键是varchar) 方案二:把insert into 表名

    2024年02月01日
    浏览(51)
  • MySql命令报错:Duplicate entry ‘10‘ for key ‘PRIMARY‘解决方案

    经常遇到这个问题,今天我把这个问题记录下来,以后如果有其他人遇到相同的问题,不至于困惑。我自己也作为一种学习中的出错记录,错题本,提醒自己。 在操作数据库的时候,经常会出现Duplicate entry ‘10’ for key \\\'PRIMARY’这样的报错,这是什么意思呢? 我去翻译了一下

    2024年02月11日
    浏览(41)
  • mysql报错 之 报错:Duplicate entry 字段 for key ‘表名.idx_字段’

    Mysql 进行insert 操作,报错:Duplicate entry 字段 for key ‘表名.idx_字段’ 原因解析:idx 是做的索引键,是具有唯一性 当 mysql中报错 Duplicate entry 字段 for key ‘表名.idx_字段’ 就是代表字段不对,索引字段重复 主键重复 唯一键重复 修改重复的字段,重新进行insert

    2024年04月26日
    浏览(34)
  • Mysql出现问题:ERROR 1062 (23000): Duplicate entry ‘‘ for key ‘PRIMARY‘解决方案

    回城传送–》《数据库问题解决方案》 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆 ❤️技术活,该赏 ❤️点赞 👍 收藏 ⭐再看,养成习

    2024年02月02日
    浏览(59)
  • Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘xxx‘ for key ‘xxx‘错误的解决方法

    今天写好 导入hive表 的接口,如下代码所示: 启动 postman 访问该接口,确报出如下错误: 错误信息比较多,我们就截取如上重要的信息: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry \\\'missionMockId-x01\\\' for key \\\'idx_misstion_id_deleted\\\' 。 根据 java.sql.SQLIntegrityConstraintViolationExce

    2024年02月09日
    浏览(47)
  • js遍历对象key,value

    方法一:转化为操作数组forEach遍历 遍历对象属性 关于Object.keys()方法 Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致。 例子 遍历对象属性值 关于Object.values()方法 object .values()静态方

    2024年02月11日
    浏览(45)
  • Object.values()的用法

    Object.keys() 一、官方定义 Object.values() 方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用 for…in 循环的顺序相同(区别在于 for-in 循环枚举原型链中的属性)。 二、语法 Object.values(obj) 参数 obj 被返回可枚举属性值的对象。 返回值 一个包含对象自身的所

    2024年02月14日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包