Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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_Arrays_Loops_Object - Fatal编程技术网

如何在数组对象javascript中基于条件检查返回布尔值

如何在数组对象javascript中基于条件检查返回布尔值,javascript,arrays,loops,object,Javascript,Arrays,Loops,Object,我有对象数组obj1,obj2 如果对象的名称不能包含All键名,则返回true 如果对象的名称只能有一个All键名,而其他对象返回false 如果对象名只能有一个All键名,而没有其他对象,则返回true 如果对象的名称包含过多的键名All返回false 基于以上条件如何在javascript中做 function checkObj(ob){ var result = ob.filter(e=>e.name=="All"); if(result.length

我有对象数组obj1,obj2

如果对象的名称不能包含
All
键名,则返回true

如果对象的名称只能有一个
All
键名,而其他对象返回false

如果对象名只能有一个
All
键名,而没有其他对象,则返回true

如果对象的名称包含过多的键名
All
返回false

基于以上条件如何在javascript中做

function checkObj(ob){
  var result = ob.filter(e=>e.name=="All");
  if(result.length !== 1){
    return false;
  }
  else{
    return true;
  }
}

var  obj1=[
  {id:1, name: "All", value:"all"},
  {id:2, name: "Sun", value:"sun"},
  {id:3, name: "Mon", value:"mon"},
]

var  obj2=[
  {id:4, name: "Thur", value:"thur"},
  {id:8, name: "Mon", value:"mon"},
]

var  obj3=[
  {id:1, name: "Thur", value:"thur"},
  {id:5, name: "All", value:"all"},
  {id:2, name: "Mon", value:"mon"},
  {id:6, name: "All", value:"all"}
]

var obj4=[
{id:1, name: "All", value:"all"}
]

var r1= this.checkObj(obj1);
var r2=this.checkObj(obj2);
var r3=this.checkObj(obj3);
var r4=this.checkObj(obj4);

Expected Output:

false
true
false
true

您可以检查数组中是否有
name=“All”
的对象

然后,
返回true
如果

  • 数组具有
    name=“All”
    对象,数组的长度为
    1
  • 或者数组没有
    name=“All”
功能检查对象(arr){
const hasAll=arr.some(o=>o.name==“All”)
返回(arr.length==1&&hasAll)| |!hasAll
}
下面是一个片段:

功能检查对象(arr){
const hasAll=arr.some(o=>o.name==“All”)
返回(arr.length==1&&hasAll)| |!hasAll
}
const obj1=[{id:1,name:“All”,value:“All”},{id:2,name:“Sun”,value:“Sun”},{id:3,name:“Mon”,value:“Mon”},],
obj2=[{id:4,名称:“Thur”,值:“Thur”},{id:8,名称:“Mon”,值:“Mon”},],
obj3=[{id:1,name:“Thur”,value:“Thur”},{id:5,name:“All”,value:“All”},{id:2,name:“Mon”,value:“Mon”},{id:6,name:“All”,value:“All”}],
obj4=[{id:1,名称:“All”,值:“All”}];
控制台日志(检查OBJ(obj1))
控制台日志(检查OBJ(obj2))
控制台日志(checkObj(obj3))

log(checkObj(obj4))
您可以使用
name=“All”
检查数组是否有任何对象

然后,
返回true
如果

  • 数组具有
    name=“All”
    对象,数组的长度为
    1
  • 或者数组没有
    name=“All”
功能检查对象(arr){
const hasAll=arr.some(o=>o.name==“All”)
返回(arr.length==1&&hasAll)| |!hasAll
}
下面是一个片段:

功能检查对象(arr){
const hasAll=arr.some(o=>o.name==“All”)
返回(arr.length==1&&hasAll)| |!hasAll
}
const obj1=[{id:1,name:“All”,value:“All”},{id:2,name:“Sun”,value:“Sun”},{id:3,name:“Mon”,value:“Mon”},],
obj2=[{id:4,名称:“Thur”,值:“Thur”},{id:8,名称:“Mon”,值:“Mon”},],
obj3=[{id:1,name:“Thur”,value:“Thur”},{id:5,name:“All”,value:“All”},{id:2,name:“Mon”,value:“Mon”},{id:6,name:“All”,value:“All”}],
obj4=[{id:1,名称:“All”,值:“All”}];
控制台日志(检查OBJ(obj1))
控制台日志(检查OBJ(obj2))
控制台日志(checkObj(obj3))
log(checkObj(obj4))
您可以在计数超过一次时短路

函数检查数组(数组){
返回数组。every((count=>({name})=>(count+=name==“All”)<2)(0);
}
var array1=[{id:1,名称:“All”,值:“All”},{id:2,名称:“Sun”,值:“Sun”},{id:3,名称:“Mon”,值:“Mon”},
array2=[{id:4,名称:“Thur”,值:“Thur”},{id:8,名称:“Mon”,值:“Mon”}],
array3=[{id:1,名称:“Thur”,值:“Thur”},{id:5,名称:“All”,值:“All”},{id:2,名称:“Mon”,值:“Mon”},{id:6,名称:“All”,值:“All”}];
log(checkArray(array1)、checkArray(array2)、checkArray(array3))如果短路次数超过一次,您可能会受到影响

函数检查数组(数组){
返回数组。every((count=>({name})=>(count+=name==“All”)<2)(0);
}
var array1=[{id:1,名称:“All”,值:“All”},{id:2,名称:“Sun”,值:“Sun”},{id:3,名称:“Mon”,值:“Mon”},
array2=[{id:4,名称:“Thur”,值:“Thur”},{id:8,名称:“Mon”,值:“Mon”}],
array3=[{id:1,名称:“Thur”,值:“Thur”},{id:5,名称:“All”,值:“All”},{id:2,名称:“Mon”,值:“Mon”},{id:6,名称:“All”,值:“All”}];

log(checkArray(array1)、checkArray(array2)、checkArray(array3))
Change
if(result.length!==1)
to
if(result.length>1)
同样,我会使用
.some()
对于这个案例@MuhammadUsman,我在发布我的答案之前没有看到你的评论Change
if(result.length!==1)
to
if(result.length>1)
同样,我会使用
.some()
对于这个案例@MuhammadUsman,我在发布我的答案之前没有看到你的评论如果只有一个
所有
存在,并且其他对象返回false,如何检查,Thankson需要函数外部的count变量:
让count=0;array.every({name})=>(count+=name==“All”)<2;返回计数===1
如果只有一个
All
存在,并且有其他对象返回false,如何检查此项,感谢您需要函数外部的count变量:
let count=0;array.every({name})=>(count+=name==“All”)<2;返回计数===1如果只有一个对象全部存在,并且其他对象返回false,如何检查此项,thanks@codecat你问题中的第2点和第3点有什么区别?“如果对象的名称只能有一个All key name,其他对象返回false。如果对象的名称只能有一个All key name,没有其他对象返回true”。我不理解回答的区别,添加了
obj4
示例,用于“如果对象的名称只能有一个全键名称而没有其他对象返回true”
obj1
示例。如果对象的名称只能有一个全键名称而没有其他对象返回true”如果只有一个对象全部存在,并且其他对象返回false,如何检查此项,thanks@codecat你问题中的第2点和第3点有什么区别?“如果对象的名称只能有一个All key name,其他对象返回false。如果对象的名称只能有一个All key name,没有其他对象返回true”。我不明白回答的不同之处,添加了“如果名称为o”的
obj4
示例