some【有効判定 (一部要素有効)】
every【有効判定 (全要素有効)】

%TypedArray%.prototype.some【有効判定 (一部要素有効)】

メモ

概要

  • 一部要素コールバック関数有効 (true) か判定
    • コールバック関数で有効 (true) となった時点で処理中止
    • 存在しない要素に対しては判定なし
    • コールバック関数で配列の変更も可能

関連

外部リンク

構文

typedArray.some ( callbackfn [, thisArg ] )

判定結果
    true:配列要素に対して、callbackfnが1つでも true 返却
    false:その他
callbackfn有効判定用コールバック関数 (詳細は下記参照)
thisArgcallbackfn内でthis で参照されるオブジェクト

TypeError callbackfnが呼び出し不可
コールバック関数 引数名 (例)説明
value要素値
index要素インデックス
typedArray型指定配列ビュー
戻り値型説明
Boolean型true:有効な要素
false:無効な要素

// 0 以上で true を返却する関数
function func(value, index, typedArray) {
  let result = false;
  if (0 <= value) {
    result = true;
  }
  console.log('func:', value, index, result);
  return result;
}

// 要素値が this で指定した値より大きい場合、true を返却する関数
function funcThis(value, index, typedArray) {
  let result = false;
  if (this < value) {
    result = true;
  }
  console.log('funcThis:', value, index, this, result);
  return result;
}

const arrayA = [ 0, 10, 20, 30];
const arrayB = [ -100, -10, -20, -30];
const typedArrayA = new Int32Array(arrayA);
console.log(typedArrayA);
// 出力:Int32Array(4) [0, 10, 20, 30, (省略) ]
const typedArrayB = new Int32Array(arrayB);
console.log(typedArrayB);
// 出力:Int32Array(4) [-100, -10, -20, -30, (省略) ]

let result = typedArrayA.some(func);
// 出力:
// func: 0 0 true
console.log(result);
// 出力:true
result = typedArrayB.some(func);
// 出力:
// func: -100 0 false
// func: -10 1 false
// func: -20 2 false
// func: -30 3 false
console.log(result);
// 出力:false

result = typedArrayA.some(funcThis, 20);
// 出力:
// funcThis: 0 0 Number {20} false
// funcThis: 10 1 Number {20} false
// funcThis: 20 2 Number {20} false
// funcThis: 30 3 Number {20} true
console.log(result);
// 出力:true
result = typedArrayA.some(funcThis, 100);
// 出力:
// funcThis: 0 0 Number {100} false
// funcThis: 10 1 Number {100} false
// funcThis: 20 2 Number {100} false
// funcThis: 30 3 Number {100} false
console.log(result);
// 出力:false

// 例外
try {
  console.log( typedArrayA.some(null) );
} catch(e) {
  console.log(e); // 例外:TypeError: null is not a function
}

%TypedArray%.prototype.every【有効判定 (全要素有効)】

メモ

概要

  • 全ての要素コールバック関数有効 (true) か判定
    • コールバック関数で無効 (false) となった時点で処理中止
    • 存在しない要素に対しては判定なし
    • コールバック関数で配列の変更も可能

関連

外部リンク

構文

typedArray.every ( callbackfn [, thisArg ] )

判定結果
    true:全ての配列要素に対して、callbackfntrue 返却
    false:その他
callbackfn有効判定用コールバック関数 (詳細は下記参照)
thisArgcallbackfn内でthis で参照されるオブジェクト

TypeError callbackfnが呼び出し不可
コールバック関数 引数名 (例)説明
value要素値
index要素インデックス
typedArray型指定配列ビュー
戻り値型説明
Boolean型true:有効な要素
false:無効な要素

// 0 以上で true を返却する関数
function func(value, index, typedArray) {
  let result = false;
  if (0 <= value) {
    result = true;
  }
  console.log('func:', value, index, result);
  return result;
}

// 要素値が this で指定した値より大きい場合、true を返却する関数
function funcThis(value, index, typedArray) {
  let result = false;
  if (this < value) {
    result = true;
  }
  console.log('funcThis:', value, index, this, result);
  return result;
}

const arrayA = [ 0, 10, 20, 30];
const arrayB = [ 0, -10, 20, -30];
const typedArrayA = new Int32Array(arrayA);
console.log(typedArrayA);
// 出力:Int32Array(4) [0, 10, 20, 30, (省略) ]
const typedArrayB = new Int32Array(arrayB);
console.log(typedArrayB);
// 出力:Int32Array(4) [0, -10, 20, -30, (省略) ]

let result = typedArrayA.every(func);
// 出力:
// func: 0 0 true
// func: 10 1 true
// func: 20 2 true
// func: 30 3 true
console.log(result);
// 出力:true
result = typedArrayB.every(func);
// 出力:
// func: 0 0 true
// func: -10 1 false
console.log(result);
// 出力:false

result = typedArrayA.every(funcThis, 20);
// 出力:
// funcThis: 0 0 Number {20} false
console.log(result);
// 出力:false
result = typedArrayA.every(funcThis, -10);
// 出力:
// funcThis: 0 0 Number {-10} true
// funcThis: 10 1 Number {-10} true
// funcThis: 20 2 Number {-10} true
// funcThis: 30 3 Number {-10} true
console.log(result);
// 出力:true

// 例外
try {
  console.log( typedArrayA.every(null) );
} catch(e) {
  console.log(e); // 例外:TypeError: null is not a function
}