Object.keys()、Object.values()的用法

一.Object.keys()的用法

1.Object.keys()介绍

Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组(返回字符串数组),数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。

2.Object.keys()语法

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

3.Object.keys()举例

对象,返回对象的key值组成的数组(字符串)

let obj={
    name:"zhangsan",
    age:18,
    gender:"male"
}
console.log(Object.keys(obj));//[ 'name', 'age', 'gender' ]

数组,返回数组索引值组成的数组(字符串)

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

字符串,返回字符串索引组成的数组(字符串)

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

构造函数,返回空数组或构造函数的属性名组成的数组

function Fn(name,age,gender){
    this.name=name;
    this.age=age;
    this.gender=gender;
}
console.log(Object.keys(Fn));//[]
let zhangsan = new Fn("张三",18,"male");
console.log(Object.keys(zhangsan));//[ 'name', 'age', 'gender' ]

实用技巧

let zhangsan={
    name:"张三",
    age:18,
    gender:"male"
}
Object.keys(zhangsan).map(key=>{
    console.log(key+':'+zhangsan[key]);
})
// name:张三
// age:18
// gender:male

注意
在ES5里,如果此方法的参数不是对象(而是一个原始值),那么它会抛出 TypeError。在ES2015中,非对象的参数将被强制转换为一个对象

Object.keys("foo");
// TypeError: "foo" is not an object (ES5 code)

Object.keys("foo");
// ["0", "1", "2"]                   (ES2015 code)

当传入的对象的key是整数类型的时候,Object.keys()会返回有序的值。

let zhangsan={
    40:"张三",
    20:18,
    30:"male"
}
console.log(Object.keys(zhangsan));//[ '20', '30', '40' ]
Object.keys(zhangsan).map(keys=>{
    console.log(keys+':'+zhangsan[keys]);
})

// [ '20', '30', '40' ]
// 20:18
// 30:male
// 40:张三


二.Object.values()的用法

1.Object.values()介绍

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

let zhangsan={
    name:"张三",
    age:18,
    gedner:"male"
}
for(let item in zhangsan){
    console.log(item);// name age gender
}
console.log(Object.values(zhangsan));//[ '张三', 18, 'male' ]
2.Object.values()语法

Object.values(obj) obj被可枚举属性的对象。
返回值:一个包含对象自身的所有可枚举属性值的数组。

3.Object.values()举例

对象,返回对象的value值组成的数组(字符串)


let zhangsan={
    name:"张三",
    age:18,
    gedner:"male"
}
console.log(Object.values(zhangsan));//[ '张三', 18, 'male' ]

数组,返回该数组(字符串)

let  arr = [20,10,30];
console.log(Object.values(arr));//[ 20, 10, 30 ]

字符串,返回单个字符组成的数组(字符串)

let str =  "hello";
console.log(Object.values(str));//[ 'h', 'e', 'l', 'l', 'o' ]

构造函数,返回空数组或实例化对象传入的值组成的数组

function Fn(name,age,gender){
    this.name=name;
    this.age=age;
    this.gender=gender;
}
console.log(Object.values(Fn));//[]
let mark = new Fn("mark",18,"male");
console.log(Object.values(mark));//[ 'mark', 18, 'male' ]

与Object.keys()相同的是:当传入的对象的键为整数类型时,Object.values()会返回有序的值组成的数组。

let obj = {40:"mark",20:18,30:"male"};
console.log(Object.keys(obj));
console.log(Object.values(obj));
// [ '20', '30', '40' ]
// [ 18, 'male', 'mark' ]

三.总结

这里特地记录下Object.key() 、Object.values()的使用方法,方便在工作中使用Object.key() 、Object.values()会根据对象类型的不同返回不同的参数,特别需要注意的是它们都是返回的数组形式,Object.key()返回的是字符串形式的数组。

  • 8
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值