我想弄清楚为什么这会返回false:
var goodUsers = [
{ id: 1 },
{ id: 2 },
{ id: 3 },
];
var testUsers = [
{ id: 1 },
{ id: 2 },
{ id: 3 }
];
console.log(testUsers.every(testUser => {
goodUsers.some(goodUser => {
testUser.id === goodUser.id
})
}));
我认为我的问题在于如何在some
内嵌套every
。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:6)
.some
和.every
的回调实际上并没有返回任何内容。这就是你得到false
的原因。
var goodUsers = [
{ id: 1 },
{ id: 2 },
{ id: 3 },
];
var testUsers = [
{ id: 1 },
{ id: 2 },
{ id: 3 }
];
console.log(testUsers.every(testUser => {
return goodUsers.some(goodUser => {
return testUser.id === goodUser.id
});
}));
执行之间存在差异:
goodUser => testUser.id === goodUser.id
和
goodUser => { testUser.id === goodUser.id; }
第一个 - 没有 {}
- 有隐式 return
。它返回表达式的值。这和做的一样:
goodUser => { return testUser.id === goodUser.id; }
您正在使用{}
,它会启动一个语句块,并省略return
语句。
DOCS:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions