javascript - 如何获取 javascript 对象属性的子集,不包括未定义或空属性
问题描述
我可以有不同版本的对象:
myObject1 = {
color: 'red',
size : 'big',
name : 'Beautiful red',
count: 2
};
myObject2 = {
color: 'blue',
name : 'Awesome blue',
count : null
};
我需要一个助手来只保留我想要并且存在的价值:
function myHelper() {
?????
}
myHelper(myObject1, ['color','size','count']) // => { color: 'red', size : 'big', count:2}
myHelper(myObject2, ['color','size','count']) // => { color: 'blue'}
有人已经创建了吗?
解决方案
将对象转换为条目并通过以下方式过滤:
- 对象属性 (
key
) 存在于所需的键列表 (props
)中 - 值 (
val
) 不是null
。
const myObject1 = {
color: 'red',
size : 'big',
name : 'Beautiful red',
count: 2
};
const myObject2 = {
color: 'blue',
name : 'Awesome blue',
count : null
};
function myHelper(obj, props) {
return Object.fromEntries(Object.entries(obj)
.filter(([key, val]) => props.includes(key) && val != null));
}
console.log(myHelper(myObject1, ['color','size','count']));
console.log(myHelper(myObject2, ['color','size','count']));
.as-console-wrapper { top: 0; max-height: 100% !important; }
如果要优化这一点,可以通过以下方式将“数组包含”更改为“集合包含”检查:
const myHelper = (obj, props) => (pSet => Object.fromEntries(Object.entries(obj)
.filter(([key, val]) => pSet.has(key) && val != null)))
(new Set(props));
推荐阅读
- javascript - 尝试在数组中查找值时出错
- r - R如何将一列拆分为多列
- javascript - 选择后如何自动显示价格
- flutter - 如何使用 Flutter GetX 构建 TabView
- java - 即使没有在 ItemWriter 上指定,Spring Batch 也会自动提交数据库更新
- javascript - 如何点击显示各种元素而不重复功能?
- python - 协作错误:错误:命令错误退出状态为 1:python setup.py egg_info 检查日志以获取完整的命令输出
- c# - 使用 C# 的最后 3 个字符按字母顺序排列列表?
- javascript - Bootstrap4 Carousel 不左右滑动
- java - 如何在android studio中显示通知图标