我看到在给定测试时返回true或false。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every
将它们放在一起应该是什么样的正确案例?
测试代码:
function checkUsersValid(goodUsers) {
return function allUsersValid(submittedUsers) {
//Im testing arrays here
return submittedUsers.every(function isBigEnough(element, index, array) {
return goodUsers.some(function (el, i, arr) {
return element.id == el.id;
});
});
};
}
var goodUsers = [
{ id: 1 },
{ id: 2 },
{ id: 3 }
];
var testAllValid = checkUsersValid(goodUsers);
testAllValid([
{ id: 2 },
{ id: 1 }
]);
答案 0 :(得分:28)
(如果你知道C#LINQ,就像Any
vs All
)
some
,则 true
将返回true
如果所有谓词为every
true
将返回true
其中谓词表示为每个元素返回bool
(true / false)的函数
答案 1 :(得分:11)
some
类似于逻辑or
every
类似于逻辑and
逻辑上every
隐含some
,但不反过来
试试这个:
var identity = function(x){return x}
console.log([true, true].some(identity))//true
console.log([true, true].every(identity))//true
console.log([true, false].some(identity))//true
console.log([true, false].every(identity))//false
console.log([false, false].some(identity))//false
console.log([false, false].every(identity))//false
console.log([undefined, true].some(identity))//true
console.log([undefined, true].every(identity))//false
console.log([undefined, false].some(identity))//false
console.log([undefined, false].every(identity))//false
console.log([undefined, undefined].some(identity))//false
console.log([undefined, undefined].every(identity))//false
答案 2 :(得分:3)
文档回答了你的问题......
some()方法测试数组中的某个元素是否通过了 测试由提供的功能实现。
every()方法测试数组中的所有元素是否都通过了 测试由提供的功能实现。
因此,如果您想测试some
元素或every
元素,则可以使用它们。
如果every() returns true
则some() returns true
。
但是
如果some() returns true
则we cannot conclude anything about the result of every()
。
答案 3 :(得分:1)
Array.prototype.some
是好的,这意味着你只需要知道是否有一个至少满足你的约束。
Array.prototy.every
对于检查数组的完整性很有用,例如,"我的数组中的所有项都是Car
的实例?&#34;。< / p>
答案 4 :(得分:0)
Array.prototype.some
来确定数组中的一个特定元素是否匹配布尔条件。Array.prototype.every
来确定数组中的所有元素是否都符合布尔条件。
const array = [1, 2, 3, 4, 5];
const evenArr = [2, 4, 6];
const even = (element) => {
return element % 2 === 0;
};
console.log(array.some(even)); // true
console.log(array.every(even)) // false
console.log(evenArr.every(even)) // true
答案 5 :(得分:0)
array.every()的简单示例: every()方法测试数组中的所有元素是否通过提供的函数实现的测试。
注意:对于放置在空数组上的任何条件,此方法均返回true。
function lessThanTwenty(currentValue) {
return currentValue < 20;
}
let array = [1, 30, 39, 29, 10, 19];
console.log(array.every(lessThanTwenty));
//output : true
array.some()的简单示例:
some()方法测试数组中的至少一个元素是否通过了由提供的函数实现的测试。
注意:对于放置在空数组上的任何条件,此方法都将返回false。
let array2 = [1, 2, 3, 4, 5];
let even = function(ele) {
return ele % 2 === 0;
};
console.log(array.some(even));
// output: true