Javascript 清除空值和未定义的对象

Javascript 清除空值和未定义的对象,javascript,node.js,Javascript,Node.js,我已经编写了以下函数,该函数清除对象中的空值和未定义值,但出于某种原因,它还删除了值为0的键 例如: { key1: 'value1', key2: 0 } 该功能将删除键2,即使不应删除 以下是函数: 请告知。问题在 obj[key] && obj[key] !== 'delete' 当obj[key]==0时,将返回false。问题在 obj[key] && obj[key] !== 'delete' 当obj[key]==0时,将返回fals

我已经编写了以下函数,该函数清除对象中的空值和未定义值,但出于某种原因,它还删除了值为0的键

例如:

{
  key1: 'value1',
  key2: 0
} 
该功能将删除键2,即使不应删除

以下是函数:

请告知。

问题在

obj[key] && obj[key] !== 'delete'
当obj[key]==0时,将返回false。

问题在

obj[key] && obj[key] !== 'delete'

当obj[key]==0时,将返回false。

我认为这将解决您的问题:


obj[键]!==null&&obj[键]!==未定义和对象[键]!='删除“

我认为这样可以解决您的问题:

obj[键]!==null&&obj[键]!==未定义和对象[键]!='删除“

这里有一个使用Object.entries的选项:

constmyjson={key1:'value1',key2:0,key3:null,key4:undefined,key5:}; const myCleanJSON=Object.entriesmyJSON .filter[键,值]=>值!==值的类型为null&&typeof!='未定义的' .reduceac,b=>!长度?{……acc[b[0]]:b[1]}:{[acc[0]]:acc[1],[b[0]]:b[1]}; console.logmyCleanJSON 以下是使用Object.entries的一个选项:

constmyjson={key1:'value1',key2:0,key3:null,key4:undefined,key5:}; const myCleanJSON=Object.entriesmyJSON .filter[键,值]=>值!==值的类型为null&&typeof!='未定义的' .reduceac,b=>!长度?{……acc[b[0]]:b[1]}:{[acc[0]]:acc[1],[b[0]]:b[1]}; console.logmyCleanJSON 由于0以及空字符串在转换为布尔值时计算结果为false,因此需要显式检查undefined和null:

设a={ 键1:‘值1’, 键2:0, 键3:空 } 函数cleanPropso{ 如果Object.prototype.toString.callo!='[Object Object]'返回o 用于输入o{ 如果[undefined,null]。includeso[key]删除o[key] } 返回o } console.logcleanPropsa由于0以及空字符串在转换为布尔值时计算结果为false,因此需要显式检查未定义和null:

设a={ 键1:‘值1’, 键2:0, 键3:空 } 函数cleanPropso{ 如果Object.prototype.toString.callo!='[Object Object]'返回o 用于输入o{ 如果[undefined,null]。includeso[key]删除o[key] } 返回o }
console.logcleanPropsaPlease请阅读json标记的描述,尤其是大写字母。0是falsy,因此它将被删除。您的函数还将清除计算为false的内容。请阅读json标记的说明,尤其是大写的内容。0是falsy,因此它将被删除。您的函数还将清除计算为false的内容。您可以使用!=要捕获null和undefined并选择其中一个或另一个?是,两个都未定义!=空和空!=未定义为false,您可以直接使用!=要捕获null和undefined并选择其中一个或另一个?是,两个都未定义!=空和空!=未定义的是错误的