【ES8系列】Object 快速遍历

Object.keys()

Object.values() 返回一个数组,其元素是在对象上找到的可枚举属性值。属性的顺序与通过手动循环对象的属性值所给出的顺序相同(for…in,但是for…in还会遍历原型上的属性值)。

Object 数据遍历:新旧语法对比 

// 取班级学生姓名,obj的key
let grade = {
  'lilei': 96,
  'hanmei': 99
}
let result = []
for (let k in grade) {
  result.push(k)
}
console.log(result) // ["lilei", "hanmei"]


// ES8 新语法
console.log(Object.keys(grade)) // ["lilei", "hanmei"]

Object 数据筛选、查找 :新旧语法对比 

let grade = {
  'lilei': 96,
  'hanmei': 99
}
let result = []
for (let k in grade) {
  if (k === 'lilei') {
    result.push(k)
  }
}
console.log(result) // ["lilei"]

// ES8 Object.keys返回的是一个数组,因此可以用数组的方法来进行优雅的处理
console.log(Object.keys(grade).filter(item => item === 'lilei')) // ["lilei", "hanmei"]

Object.values()

Object.values 是在对象上找到可枚举的属性的值,所以只要这个对象是可枚举的就可以,不只是 {} 这种形式。

let grade = {
  'lilei': 96,
  'hanmei': 99
}
console.log(Object.values(grade).filter(item => item > 96)) //[99]

Object.entries()

Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in 循环遍历该对象时返回的顺序一致。(区别在于 for-in 循环也枚举原型链中的属性)

// Object 不可以直接遍历,因此这里会引发错误
let grade = {
  'lilei': 98,
  'hanmei': 87
}

for (let [key, value] of grade) {
  console.log(key, value) // Uncaught TypeError: grade is not iterable
}

利用 Object.entries() 把 object 对象转换成一个可遍历的键值对数组,因此Object.entries返回的是数组

let grade = {
  'lilei': 96,
  'hanmei': 99
}
let result = []
for (let [k, v] of Object.entries(grade)) { // 解构赋值
  console.log(k, v)  // lilei 96   hanmei 99
}


// 查看Object.entries的返回值,对应for...of...的解构赋值
console.log(Object.entries(grade))
//  [Array(2), Array(2)]
// 0: (2) ["lilei", 96]
// 1: (2) ["hanmei", 99]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值