记录几种JS中过滤对象的指定字段的方法
示例代码
const user = {
name: '小明',
age: 18,
address: '广东省广州市黄埔区',
tel:'158****0000'
}
// 需要保留的字段
const useKeys = ['name', 'age']
方法1:最简单的forin循环
const newUser1 = {}
for (const key in user) {
if (useKeys.includes(key)) {
newUser1[key] = user[key]
}
}
console.log(newUser1);
方法2:最简洁,利于JSON.stringify的第二个参数,过滤出需要的字段,但是要注意他的缺陷,function,undefined等的问题,避免挖坑
const newUser2 = JSON.parse(JSON.stringify(user, useKeys))
方法3:ES10新增的Object.fromEntries和Object.entries共同处理,稍微复杂点
// 先转化成键值数组[['name','小明'],['age': 18]] 第一个是key,第二个是value
const list = Object.entries(user).filter(([key]) => useKeys.includes(key))
// Object.fromEntries将上面的键值数组转化成对象
const newUser3 = Object.fromEntries(list)
前两天刚看到 Object.fromEntries也能转化url参数转为对象
顺便记录下
const search = location.search // 拿到?name=小明&age=18
const UrlSp = new URLSearchParams(search) // 转成URLSearchParams对象
const urlParams = Object.fromEntries(UrlSp)