Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅提取在对象中具有值的属性_Javascript_Object - Fatal编程技术网

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,但属性也可以是空数组和空对象,在我的情况下,它们将被视为没有值。如果值是空字符串,怎么办?我尝试了一下,不知道怎么做。空字符串也被视为没有值。