Javascript 仅提取在对象中具有值的属性
我有一个像这样的对象,例如:Javascript 仅提取在对象中具有值的属性,javascript,object,Javascript,Object,我有一个像这样的对象,例如: let data = { color: "green", color1: "red", color2: null, color3: 34, color4: null, color5: true, color6: [], } 我只想提取具有值的属性并创建一个新对象。所以这个新对象看起来像这样: let data = { color: "green", color1: "red", color3: 34, c
let data = {
color: "green",
color1: "red",
color2: null,
color3: 34,
color4: null,
color5: true,
color6: [],
}
我只想提取具有值的属性并创建一个新对象。所以这个新对象看起来像这样:
let data = {
color: "green",
color1: "red",
color3: 34,
color5: true,
}
这将是动态的,属性和值可以改变,但最后我总是想做一个只有值的对象。有什么切实可行的方法吗?您可以通过以下步骤创建一个
新对象
:
- 您可以使用
Object.keys
- 然后,您可以使用
将键数组转换为转换后的对象Array.reduce
- 在
中,您将获得累积对象acc
- 在
中,您将收到当前密钥curr
- 创建一个函数
,您可以在其中定义规则以检查是否存在。根据您的示例,我已经检查了isEmptyObject
和null
。您可以修改此函数数组长度
let数据={
颜色:“绿色”,
颜色1:“红色”,
color2:null,
颜色3:34,
color4:null,
颜色5:对,
颜色6:[],
}
var newObj=Object.keys(data.reduce)(acc,curr)=>{
如果(isEmptyObject(数据、当前))返回acc;
acc[当前]=数据[当前];
返回acc;
}, {});
函数isEmptyObject(对象,键){
返回obj[key]==null | | Array.isArray(obj[key])&&obj[key]。长度==0;
}
console.log(newObj)
请回顾一下您的研究,了解有关SO的相关主题,并试一试。如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布一份你的尝试,并明确指出你陷入困境的地方。人们会乐意帮忙的。祝你好运如果值是{}
,如何?如果没有值,它必须保持null,但属性也可以是空数组和空对象,在我的情况下,它们将被视为没有值。如果值是空字符串,怎么办?我尝试了一下,不知道怎么做。空字符串也被视为没有值。