使用ES新特性过滤JS对象中不需要的属性

本文介绍了一种使用ES8的Object.entries()和ES10的Object.fromEntries()来过滤JavaScript对象中特定属性的方法,相较于传统的Object.keys和filter组合,此方法更为简洁高效。
摘要由CSDN通过智能技术生成

在一些场景需要过滤 js 对象中的属性,以前使用Object.keys、filter等一些方法配合处理,大概是这样的:

let course = {
    math: 66,
    chinese: 68,
    history: 82
}

需要过滤分数大于80分的对象

let arr = []
let obj = {}
arr = Object.keys(course).filter(key=> course[key] > 80)
arr.forEach(key=> {
    obj[key] = course[key]
})
console.log(obj) //{history:82}

接下来介绍另一种解决方案,相对来说更加的便捷且稳定


使用ES8的Object.entries()以及ES10的Object.fromEntries()

Object.entries():返回一个数组,成员是参数对象自身所有可遍历属性的键值对数组
个人理解:就是二维数组,里面的每一项都是由对象的key、value组成的数组

const obj = {
    name: '张三',
    age: 18
}
console.log(Object.entries(obj))
// [['name', '张三'], ['age', 18]]

Object.fromEntries(): 就是把键值对列表转换为对象,这个键值对就是Object.entries()生成的 

Object.fromEntries([['name', '张三'], ['age', 18]])
// {name: '张三', age: 18}
有了这两个方法就可以更便捷的实现对象过滤了,具体实现如下:

const res = Object.entries(course).filter(([key, val]) => val > 80)
const objRes = Object.fromEntries(res)
console.log(objRes)
// {math: 89, english: 82}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值