每个JavaScript数组之间的区别

时间:2015-08-04 12:44:48

标签: javascript arrays

我看到在给定测试时返回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 }
    ]);

6 个答案:

答案 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 truesome() returns true

但是

如果some() returns truewe cannot conclude anything about the result of every()

答案 3 :(得分:1)

如果你正在寻找入侵者或遗物,

Array.prototype.some是好的,这意味着你只需要知道是否有一个至少满足你的约束。

另一方面,

Array.prototy.every对于检查数组的完整性很有用,例如,&#34;我的数组中的所有项都是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