每个JavaScript数组之间的区别

STE*_*EEL 10 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 }
    ]);
Run Code Online (Sandbox Code Playgroud)

Roy*_*mir 32

(如果你知道C#LINQ,它就像Anyvs All)

  • some如果有任何谓词,则返回truetrue

  • every如果所有谓词都是,则返回truetrue

谓词表示bool为每个元素返回(true/false)的函数

  • @PavelGatnar你在哪里看到我告诉他他应该知道LINQ?我说`_if_`,作为另一种语言的参考例子.我的解释也很清楚 - 不知道C#. (7认同)

Pav*_*nar 13

some is analogue to logical or
every is analogue to logical and

logically every implies some, but not in reverse

try this:

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
Run Code Online (Sandbox Code Playgroud)


Val*_*ail 5

该文档回答了您的问题...

一些()方法测试所述阵列中的一些元件是否通过由提供的功能来实现的测试。

每一个()方法测试是否阵列中的所有元件由通过所提供的功能来实现的测试。

因此,您将根据要测试some元素或every元素来使用它们。

如果every() returns true那么some() returns true

如果some() returns true那么we cannot conclude anything about the result of every()