如何修改JavaScript函数实现按数组匹配对象键生成新对象?
从对象中提取指定键对应的键值对组成新对象
给定一个JavaScript对象和包含键名的数组,我们需要返回一个仅包含数组中存在的键的新对象。原代码逻辑是根据值匹配键,这里我们修改为根据键匹配提取键值对。
方法一:遍历数组构建结果对象
var obj = {"active": 12,"inactive": 14,"neutral": 16} var arr1=['active','inactive'] function getFilteredObj(obj, arr) { const result = {}; arr.forEach(key => { // 检查原对象是否包含当前键,避免继承属性干扰 if (obj.hasOwnProperty(key)) { result[key] = obj[key]; } }); return result; } console.log(getFilteredObj(obj, arr1)); // 输出: {"active": 12,"inactive": 14}
这个方法逻辑直观:初始化空对象存储结果,遍历数组中的每个键名,若原对象包含该键(用hasOwnProperty确保是对象自身属性),就将对应的键值对复制到结果对象中。
方法二:ES6+简洁写法
var obj = {"active": 12,"inactive": 14,"neutral": 16} var arr1=['active','inactive'] function getFilteredObj(obj, arr) { return Object.fromEntries( Object.entries(obj).filter(([key]) => arr.includes(key)) ); } console.log(getFilteredObj(obj, arr1)); // 输出: {"active": 12,"inactive": 14}
这个写法利用ES6特性简化逻辑:
Object.entries(obj)将原对象转换为键值对数组(如[["active",12], ["inactive",14], ["neutral",16]])filter(([key]) => arr.includes(key))筛选出数组中包含的键对应的键值对Object.fromEntries()将筛选后的键值对数组转回对象
内容的提问来源于stack exchange,提问作者marjan
相关产品推荐
相关产品推荐

