Object.keys()

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

语法:

Object.keys(obj)

参数:

obj:要返回其枚举自身属性的对象。

返回值:

一个表示给定对象的所有可枚举属性的字符串数组。

描述:

Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。

例子:
const obj1 = {a: 1, b: 2, c: 3}
console.log(Object.keys(obj1))  // ['a', 'b', 'c']
// 参数是数组,返回的是索引值
const arr1 = [1, 2, 3, 4]
console.log(Object.keys(arr1))  // ['0', '1', '2', '3']
// 如果key的类型是Number,那么Object.keys返回值是按照key从小到大排序
const obj2 = {10: 'a', 20: 'b', 7: 'c'}
console.log(Object.keys(obj2))  // ['7', '10', '20']
// 参数是字符串,返回的是索引值
const str1 = 'hello lvxiaobu'
console.log(Object.keys(str1)); // ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13']
// 参数是构造函数,返回的是空数组
function foo(name, sex, age) {
  this.name = name
  this.sex = sex
  this.age = age
  this.work = function(){
    return this.name + this.sex + this.age
  }
}
console.log(Object.keys(foo)) // []
const lvxiaobu = new foo('lvxiaobu', 'man', 23)
console.log(Object.keys(lvxiaobu)) // ['name', 'sex', 'age', 'work']
// 极端情况
const obj3 = {
  1: 'a',
  'b': 'b',
  7: 'c',
  a: 'd',
  '3': 'e',
  '-5': 'f'
}
console.log(Object.keys(obj3))  // ['1', '3', '7', 'b', 'a', '-5']
注意:

1、Object.keys()会把里面的参数分成几种情况,首先,Number类型的优先,然后再到字符串,正数字符串当做Number类型处理,负数字符串当做字符串处理。

  • 如果属性名的类型是Number,那么Object.keys返回值是按照key从小到大排序
  • 如果属性名的类型不是Number,那么Object.keys返回值是按照属性被创建的时间升序排序

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

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

Object.keys("foo");
// ["0", "1", "2"]                   (ES6 code)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端吕小布

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值