Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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_Nested Object - Fatal编程技术网

Javascript检查对象及其嵌套对象的所有值

Javascript检查对象及其嵌套对象的所有值,javascript,nested-object,Javascript,Nested Object,您好,我目前遇到了这样一个问题:检查一个有另一个嵌套对象的对象中的所有值是否为null或0 我的目标如下: { "city":0, "road":{ "max":null, "min":null }, "size":{ "max":null, "min":null }, "type":null, "ward":0, "floor":null, "price":{ "max":null

您好,我目前遇到了这样一个问题:检查一个有另一个嵌套对象的对象中的所有值是否为null或0

我的目标如下:

{
   "city":0,
   "road":{
      "max":null,
      "min":null
   },
   "size":{
      "max":null,
      "min":null
   },
   "type":null,
   "ward":0,
   "floor":null,
   "price":{
      "max":null,
      "min":null
   },
   "street":0,
   "toilet":null,
   "balcony":null,
   "bedroom":null,
   "district":0,
   "frontend":{
      "max":null,
      "min":null
   },
   "direction":null,
   "living_room":null
}
我需要检查其中的每个值是否为0或null,如果所有值都为0或null,则返回true,如果任何值不同于null或0,则返回false

我不能使用:

Object.valuesobject.everyi=>i==null | | i==

返回false,因为嵌套对象仍然被认为是与0和null

不同的值。 我不想写超长的if条件,每次检查它的每一个值


是否仍要对对象及其嵌套对象进行迭代以进行检查?

一个不雅观的选项是使用JSON.stringify和回调,并且每当找到0或null以外的值时,设置一个标志:

常量对象={ 城市:0, 道路:{ max:null, min:null }, 尺寸:{ max:null, min:null }, 类型:销售, 病房:0,, 楼层:空, 价格:{ max:null, min:null }, 街道:0,, 厕所:空, 阳台:空, 卧室:空, 地区:0,, 前端:{ max:null, min:null }, 方向:空, 客厅:空 }; 让allZeroNull=true; JSON.stringifyobj,key,val=>{ 如果val!='object'&&val!==0{ allZeroNull=false; } 返回val; };
console.logallZeroNull 一个不雅观的选项是将JSON.stringify与回调一起使用,并且每当找到0或null以外的值时,设置一个标志:

常量对象={ 城市:0, 道路:{ max:null, min:null }, 尺寸:{ max:null, min:null }, 类型:销售, 病房:0,, 楼层:空, 价格:{ max:null, min:null }, 街道:0,, 厕所:空, 阳台:空, 卧室:空, 地区:0,, 前端:{ max:null, min:null }, 方向:空, 客厅:空 }; 让allZeroNull=true; JSON.stringifyobj,key,val=>{ 如果val!='object'&&val!==0{ allZeroNull=false; } 返回val; };
console.logallZeroNull 您可以采用迭代和递归的方法

函数检查对象{ return Object.valuesobject.everyv=>v&&typeof v==='Object' ?检查 :v==0 | | v==null ; } var data0={城市:0,道路:{max:null,min:null},大小:{max:null,min:null},类型:销售,病房:0,楼层:null,价格:{max:null,min:null},街道:0,卫生间:null,阳台:null,卧室:null,地区:0,前端:{max:null,min:null},方向:null,客厅:null}, 数据1={城市:0,道路:{max:null,min:null},大小:{max:null,min:null},类型:null,病房:0,楼层:null,价格:{max:null,min:null},街道:0,卫生间:null,阳台:null,卧室:null,地区:0,前端:{max:null,min:null},方向:null,客厅:null}; console.logcheckdata0;//错误,因为类型:sell
console.logcheckdata1;//true您可以采用迭代和递归的方法

函数检查对象{ return Object.valuesobject.everyv=>v&&typeof v==='Object' ?检查 :v==0 | | v==null ; } var data0={城市:0,道路:{max:null,min:null},大小:{max:null,min:null},类型:销售,病房:0,楼层:null,价格:{max:null,min:null},街道:0,卫生间:null,阳台:null,卧室:null,地区:0,前端:{max:null,min:null},方向:null,客厅:null}, 数据1={城市:0,道路:{max:null,min:null},大小:{max:null,min:null},类型:null,病房:0,楼层:null,价格:{max:null,min:null},街道:0,卫生间:null,阳台:null,卧室:null,地区:0,前端:{max:null,min:null},方向:null,客厅:null}; console.logcheckdata0;//错误,因为类型:sell
console.logcheckdata1;//true您可以创建一个函数fn,该函数使用Object.values获取值数组,使用array.every进行迭代,如果值是对象,则对其使用fn:

常数fn=数据=> Object.valuesdata .everyv=>{ ifv==null | | v==0返回true; 返回typeof v==='object'?fnv:false; } const data={city:0,road:{max:null,min:null},size:{max:null,min:null},type:sell,ward:0,floor:null,price:{max:null,min:null},street:0,卫生间:null,阳台:null,卧室:null,地区:0,前端:{max:null,min:null},方向:null,客厅:null} 常量结果=fndata
console.logresult您可以创建一个函数fn,该函数使用Object.values获取一个值数组,使用array.every进行迭代,如果该值是一个对象,则对其使用fn:

常数fn=数据=> Object.valuesdata .everyv=>{ ifv==null | | v==0返回true; 返回typeof v==='object'?fnv:false; } const data={city:0,road:{max:null,min:null},size:{max:null,min:null},type:sell,ward:0,floor:null,price:{max:null,min:null},street:0,卫生间:null,阳台:null,卧室:null,district:0,frontend:{ max:null,min:null},方向:null,客厅:null} 常量结果=fndata
console.logresults如果每个v等于null或0,它不应该返回true吗?还是我弄错了?没错。但是你有类型:sell,它不是null或零。哦,是的,我的糟糕忘记编辑它了,类型应该是null,如果每个v等于null或0,它不应该返回true吗?还是我弄错了?没错。但是你有类型:sell,它不是null或零。哦,是的,我的错忘了编辑它,类型应该是null,它。。。很傻但给人留下深刻印象值得投票。。。虽然愚蠢但令人印象深刻,值得投票表决。