javascript - Javascript - 仅保留给定所需属性列表的值
问题描述
我需要一个给定属性列表的函数,只保留列表中存在的键值。
例子:
attrs = ['a', 'b', 'c']
obj = {'a': 1, 'b': 2, 'c': 3}
return = {'a': 1, 'b': 2, 'c': 3}
attrs = ['a', 'b']
obj = {'a': 1, 'b': 2, 'c': 3}
return = {'a': 1, 'b': 2}
这是我到目前为止所拥有的,但它没有按预期工作:
this.keepKnownAttributes = function(attrs, obj) {
let ret = {};
attrs.forEach((attr) => {
if(obj.hasOwnProperty(attr)){
Object.assign(ret, {attr: obj[attr]});
}
});
return ret;
};
解决方案
您可以使用.reduce
从当前的键数组构建一个新对象:
const filterObj = (attr, obj) =>
attr.reduce((acc, key) => (acc[key] = obj[key], acc), {})
console.log(filterObj(['a', 'b', 'c'], {'a': 1, 'b': 2, 'c': 3}));
console.log(filterObj(['a', 'b'], {'a': 1, 'b': 2, 'c': 3}));
推荐阅读
- python - 使用未正确执行的自动化代码
- html - 避免在 h2 元素后分页 200px
- r - 如何用公式格式化ggplot`geom_text`,得到不需要的“c(...)”
- mysql - MySQL从同一行不同列中选择最后输入日期和值
- reactjs - redux-form 验证:最小长度和匹配密码
- python - 两组生成html标签
- javascript - 我如何构建我的代码以使对象位于它们自己的文件中?
- sql - Oracle SQL 面试关于物化视图的问题?
- mysql - 显示从 mysql 数据库到 laravel 刀片视图的 json 数组数据
- amazon-web-services - 错误:找不到 JobId 服务:AmazonRekognition;状态码:400;