Javascript 结合es6函数every和sum并返回布尔值
我有一个JSON响应Javascript 结合es6函数every和sum并返回布尔值,javascript,foreach,ecmascript-6,Javascript,Foreach,Ecmascript 6,我有一个JSON响应 { "nextAction": [{ "userList": [{ "id": 8, "email": "testemail@gmail.com", "name": "John Doe" }], "buttonLabel": "Finalize Now" }, {
{
"nextAction": [{
"userList": [{
"id": 8,
"email": "testemail@gmail.com",
"name": "John Doe"
}],
"buttonLabel": "Finalize Now"
},
{
"userList": [{
"id": 10,
"email": "newemail@gmail.com",
"name": "Test User"
}],
"buttonLabel": "Start Now"
}
]
}
userList
数组有时包含null
对象。
我在满足以下3个条件的条件下工作
nextAction
数组应为非空李>
userList
数组不应包含null
元素currentUser
应该出现在userList
数组中const数据=[{
“用户列表”:[{
“id”:8,
“电子邮件”:testemail@gmail.com",
“姓名”:“约翰·多伊”
}],
“按钮标签”:“立即完成”
},
{
“用户列表”:[{
“id”:10,
“电子邮件”:newemail@gmail.com",
“名称”:“测试用户”
}],
“按钮标签”:“立即开始”
}]
函数CheckFormyTextActions(myNextActions,currentUser){
const checkUsername=obj=>obj.email==currentUser;
return(myNextActions.forEach)((myAction,index)=>{
(myAction.userList.length)&&
myAction.userList.every(userList=>
用户列表!==null)&&
myAction.userList.some(检查用户名)
)
}))
}
var result=checkForMyNextActions(数据)testemail@gmail.com")
console.log(result)
您只需使用Array.reduce()
即可:
const data=[{“userList”:[{“id”:8,“email”:”testemail@gmail.com,“名称”:“John Doe”}],“按钮标签”:“立即完成”}];
函数CheckFormyTextActions(myNextActions,currentUser){
const checkUsername=obj=>obj.email==currentUser;
返回myNextActions.reduce((a,curr)=>{
让bool=curr.userList.length&&curr.userList.every(userList=>userList!==null)和&curr.userList.some(checkUsername);
返回bool&a;
},对)!=0;
}
var result=checkForMyNextActions(数据)testemail@gmail.com")
console.log(result)
checkForMyNextActions返回未定义,因为forEach
返回未定义。使用map
对数组中的每个元素调用函数,并使用函数的返回值返回新数组。另外,传递给forEach的内部函数不会返回任何内容。您可以通过&:
var obj={
“nextAction”:[{
“用户列表”:[{
“id”:8,
“电子邮件”:testemail@gmail.com",
“姓名”:“约翰·多伊”
}],
“按钮标签”:“立即完成”
}]
}
const getUser=(usr)=>obj.nextAction.some(({
用户列表
}) =>
userList?(userList.every(userList=>userList!==null)&&
userList.find(y=>y.email==usr)):false)
console.log(getUser(“testemail@gmail.com)//对
console.log(getUser(“test@gmail.com"))//false
当userList为空条件时,此操作是否有效?请稍候,但我认为您的第二条规则是:userList数组不应包含空元素。
?是的,我还需要验证userList没有任何空条目作为对结果的解释:forEach
不会返回任何内容,即将返回未定义的。当您执行undefined&&anything
时,您总是会得到undefined
,这是JavaScript的结果。有关解决方案,请参阅现有答案!