Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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 如何调整此代码,使其只返回null、未定义或空值_Javascript_Arrays_Node.js_Null_Return - Fatal编程技术网

Javascript 如何调整此代码,使其只返回null、未定义或空值

Javascript 如何调整此代码,使其只返回null、未定义或空值,javascript,arrays,node.js,null,return,Javascript,Arrays,Node.js,Null,Return,对nodeJS来说是全新的,所以请容忍我 我需要一些关于我试图创建的功能的帮助,基本上我试图使用过滤器从对象返回所有空的、空的或未定义的值,但不确定如何执行 这是我在网上找到的一些代码,它显示了如何删除空值,但不是删除,我希望它显示所有空值、未定义值或空值(包括键和值) 代码如下: const myObj = { a: 1, b:'foo', c: '', d: null, e: undefined, f: {v: 1, w:'foo', x: '', y: null,

对nodeJS来说是全新的,所以请容忍我

我需要一些关于我试图创建的功能的帮助,基本上我试图使用过滤器从对象返回所有空的、空的或未定义的值,但不确定如何执行

这是我在网上找到的一些代码,它显示了如何删除空值,但不是删除,我希望它显示所有空值、未定义值或空值(包括键和值)

代码如下:

const myObj = { 
  a: 1,
  b:'foo',
  c: '',
  d: null,
  e: undefined,
  f: {v: 1, w:'foo', x: '', y: null, z: undefined, m:{a:'asd'}}
  };

const removeEmpty = (obj) => {
  Object.keys(obj).forEach(k =>
    (obj[k] && typeof obj[k] === 'object') && removeEmpty(obj[k]) ||
    (!obj[k] && obj[k] !== undefined)
  );
  return obj;
};

console.log(removeEmpty(myObj));
非常感谢您的帮助


感谢阅读

我不确定您的代码片段是从哪里来的,但它似乎没有以任何方式修改对象。下面的内容应该有用,希望能帮助你理解它。由于对象是通过引用传递的,因此我们可以对任何属性进行递归,该属性是处理嵌套情况的对象

constmyobj={
答:1,,
b:“foo”,
c:“,
d:空,
e:未定义,
f:{v:1,w:'foo',x:'',y:null,z:undefined,m:{a:'asd'}
};
常量removempty=(obj)=>{
对象的每个属性的Object.keys(obj.forEach)(k=>{//)
if(obj[k]==null){
delete obj[k];//null的特殊情况,因为typeof null返回“object”:-(
}else if(typeof obj[k]=='object'){//如果属性是对象
removempty(obj[k]);//递归
}else if(!obj[k]){//if属性为false(未定义,“,0)
delete obj[k];//将其从对象中删除
}
});
返回obj;
};

log(removempty(myObj));
我会编写一个函数,递归地遍历对象的所有值并删除不需要的值。在我们的例子中,我们不需要有效值

我脑子里有以下代码

function deleteValues(myObj) {
   for (let key in myObj) {
      if (myObj[key]) {
        if (typeof myObj[key] == 'object') { 
          deleteValues(myObj[key]);
         } else {
            delete myObj[key];
         }
      }
    }
 }

 deleteValues(myObj);

这将显示该对象中的未定义值或空值,这是您所需要的,对吗?除非我读错了问题。

这是一个很好的答案,感谢它确实帮助我理解。但是,与其删除空值、未定义值或空值,我希望它在日志中显示这些值,以便我可以看到哪些值是empty,null或未定义。我将如何调整您的代码以实现此目标?提前感谢。两个非常好的答案,非常详细。非常感谢先生。除非您解释您的答案以及它是函数的更好版本,否则它可能会被否决或删除。您必须提供一点上下文和格式良好的代码。Welcome到堆栈溢出。感谢回答问题。谢谢,将更新代码并提供我的解释。
    for (const key in myObj) if ([null, undefined].includes(myObj[key])) console.log(`myObj[${key}] is ${myObj[key]}`);