JavaScript - Array every(), some() を学ぶ

JavaScriptでは、Arrayのevery()は、配列内のすべての要素がどの条件を満たしているかを確認します。 some() 関数は、配列の1つの要素が特定の条件を満たしているかどうかを判断するために使用します。

以下のコードはsomeとeveryを使用する例です。 some と every の引数である条件をチェックする callback 関数を渡します。 some() の場合 1 つの要素でも callback に対して true が返されると true を返します。一方、 every() は、配列のすべての要素が callback に対して true を返さなければ true を返します。

var arr1 = [10, 20, 30, 40];

let result = arr1.some(num => num > 30);
console.log(result); // true

result = arr1.every(num => num > 30);
console.log(result); // false

1. every()、some() Syntax

everyとsomeはどちらもcallback関数を引数として受け取ります。

arr.every(callback)
arr.some(callback)

callback 関数は以下のように 3 つの引数を受け取ります。 indexとarrayが必要ない場合は省略できます。

  • element:現在の関数に渡されたヨー
  • index : 現在の要素の inde
  • array: 配列客
function isEven(element, index, array)

2. every(), some() の違い

  • every()はすべての要素の条件を満たす必要があります。
  • some()は1つの要素しか満たしていません。
  • some の場合、条件が満たされた要素が残っている要素をチェックせずに true 戻りおよび関数終了。残りの要素に関係なくtrueを返すので、残りの要素をチェックする必要はありません
  • everyの場合、ある要素が条件を満たさない場合、残りの要素をチェックせずにfalseを返します。残りの要素が条件を満たしても false が返されるため、チェックする必要はありません

以下の例を見ると、上記の内容を確認できます。

function isEven(element, index, array) {
  let even = (element % 2 === 0);
  console.log("element: " + element + ", index: "
    + index + ", array: " + array + ", even: " + even);
  return even;
}

console.log("# every test1");
let result = [10, 20, 30, 40].every(isEven);
console.log(result);

console.log("# every test2");
result = [10, 21, 30, 40].every(isEven);
console.log(result);

console.log("# some test1");
result = [10, 20, 30, 40].some(isEven);
console.log(result);

console.log("# some test2");
result = [11, 21, 31, 41].some(isEven);
console.log(result);

Output:

# every test1
element: 10, index: 0, array: 10,20,30,40, even: true
element: 20, index: 1, array: 10,20,30,40, even: true
element: 30, index: 2, array: 10,20,30,40, even: true
element: 40, index: 3, array: 10,20,30,40, even: true
true
# every test2
element: 10, index: 0, array: 10,21,30,40, even: true
element: 21, index: 1, array: 10,21,30,40, even: false
false
# some test1
element: 10, index: 0, array: 10,20,30,40, even: true
true
# some test2
element: 11, index: 0, array: 11,21,31,41, even: false
element: 21, index: 1, array: 11,21,31,41, even: false
element: 31, index: 2, array: 11,21,31,41, even: false
element: 41, index: 3, array: 11,21,31,41, even: false
false

3. Arrow function を使った every(), some() 例

次のようにArrow関数を使用して簡単に実装できます。

let result = [10, 20, 30, 40].every(element => element % 2 === 0);
console.log(result);

result = [10, 20, 30, 40].some((element, index) => element % 2 === 0);
console.log(result);

result = [10, 20, 30, 40].some((element, index, arrow) => element % 2 === 0);
console.log(result);

Output:

true
true
true
codechachaCopyright ©2019 codechacha