find【値検索 (ユーザ関数)】
findLast【値検索 (後方・ユーザ関数)】
findIndex【インデックス検索 (ユーザ関数)】
findLastIndex【インデックス検索 (後方・ユーザ関数)】
includes【存在確認】
indexOf【検索 (順方向)】
lastIndexOf【検索 (逆方向)】
Array.prototype.find【値検索 (ユーザ関数)】
Array.prototype.findLast【値検索 (後方・ユーザ関数)】
メモ
概要
- 指定したユーザ関数 (コールバック関数)で順に検索処理を実行し、最初に検索された要素の値を返却
関連
外部リンク
- ECMA-262 (英語)
Array.prototype.find ( predicate [ , thisArg ] ) ES2024 (15) ES2023 (14) ES2022 (13) Array.prototype.findLast ( predicate [ , thisArg ] ) ES2024 (15) ES2023 (14) ES2022 (13)
構文
array.find( predicate[, thisArg] )
array.findLast ( predicate[, thisArg] )
最初に検索された要素の値 (undefined:検索要素なし)
predicateユーザ関数 (コールバック関数:詳細は下記参照)
thisArgユーザ関数 (コールバック関数)内でthis で参照されるオブジェクト
TypeError
predicate が呼び出し可能な関数オブジェクト以外
ユーザ関数 引数名 (例) | 説明 |
---|---|
value | 要素値 |
index | 要素インデックス |
array | Array【配列】オブジェクト |
戻り値型 | 説明 |
Boolean | true:検索対象要素 false:検索対象要素以外 |
例
/**
* find 用ユーザ関数 (コールバック関数) (判定値 this 以上を検索)
* @param {number} value 要素値
* @param {number} index 要素インデックス
* @param {Array} array Array【配列】オブジェクト
* @return {boolean} true:検索対象要素 / false:検索対象要素以外
*/
function funcFind(value, index, array) {
return (this <= value);
}
const array = [ 1, -2, 3, -4, 5, -5, 4, -3, 2, -1 ];
// find【値検索 (ユーザ関数)】
console.log( array.find(funcFind, 0) ); // 0 以上を検索
// 出力:1
console.log( array.find(funcFind, 3) ); // 3 以上を検索
// 出力:3
console.log( array.find(funcFind, 10) ); // 10 以上を検索
// 出力:undefined
// findLast【値検索 (後方・ユーザ関数)】
console.log( array.findLast(funcFind, 0) ); // 0 以上を検索
// 出力:2
console.log( array.findLast(funcFind, 3) ); // 3 以上を検索
// 出力:4
console.log( array.findLast(funcFind, 10) ); // 10 以上を検索
// 出力:undefined
Array.prototype.findIndex【インデックス検索 (ユーザ関数)】
Array.prototype.findLastIndex【インデックス検索 (後方・ユーザ関数)】
メモ
概要
- 指定したユーザ関数 (コールバック関数)で順に検索処理を実行し、最初に検索された要素のインデックスを返却
関連
外部リンク
- ECMA-262 (英語)
Array.prototype.findIndex ( predicate [ , thisArg ] ) ES2024 (15) ES2023 (14) ES2022 (13) Array.prototype.findLastIndex ( predicate [ , thisArg ] ) ES2024 (15) ES2023 (14) ES2022 (13)
構文
array.findIndex( predicate[, thisArg] )
array.findLastIndex ( predicate[, thisArg] )
要素のインデックス (-1:検索要素なし)
predicateユーザ関数 (コールバック関数:詳細は下記参照)
thisArgユーザ関数 (コールバック関数)内でthis で参照されるオブジェクト
TypeError
predicate が呼び出し可能な関数オブジェクト以外
ユーザ関数 引数名 (例) | 説明 |
---|---|
value | 要素値 |
index | 要素インデックス |
array | Array【配列】オブジェクト |
戻り値型 | 説明 |
Boolean | true:検索対象要素 false:検索対象要素以外 |
例
/**
* find 用ユーザ関数 (コールバック関数) (判定値 this 以上を検索)
* @param {number} value 要素値
* @param {number} index 要素インデックス
* @param {Array} array Array【配列】オブジェクト
* @return {boolean} true:検索対象要素 / false:検索対象要素以外
*/
function funcFind(value, index, array) {
return (this <= value);
}
const array = [ 1, -2, 3, -4, 5, -5, 4, -3, 2, -1 ];
// (0) (1)(2) (3)(4) (5)(6) (7)(8) (9)
// findIndex【インデックス検索 (ユーザ関数)】
console.log( array.findIndex(funcFind, 0) ); // 0 以上を検索
// 出力:0
console.log( array.findIndex(funcFind, 3) ); // 3 以上を検索
// 出力:2
console.log( array.findIndex(funcFind, 10) ); // 10 以上を検索
// 出力:-1
// findLastIndex【インデックス検索 (後方・ユーザ関数)】
console.log( array.findLastIndex(funcFind, 0) ); // 0 以上を検索
// 出力:8
console.log( array.findLastIndex(funcFind, 3) ); // 3 以上を検索
// 出力:6
console.log( array.findLastIndex(funcFind, 10) ); // 10 以上を検索
// 出力:-1
Array.prototype.includes【存在確認】
メモ
概要
- 指定要素が存在するか確認 (未指定の要素も比較対象)
- indexOf【検索 (順方向)】・lastIndexOf【検索 (逆方向)】 (=== 【同値 演算子】で比較) では検索できない要素の検索が可能
- NaN【非数】
- 未指定の要素 (undefined【未定義】で検索可)
- 比較方法の詳細は存在確認比較
関連
外部リンク
- ECMA-262 (英語)
Array.prototype.includes ( searchElement [ , fromIndex ] ) ES2024 (15) ES2023 (14) ES2022 (13)
構文
array.includes( searchElement[, fromIndex] )
確認結果
true:要素は存在
false:要素は存在しない
searchElement検索要素
fromIndex検索開始インデックス (詳細は下記参照)
fromIndex | 説明 |
---|---|
省略 | 0 (先頭) |
要素数 ≦ fromIndex | 検索失敗 (-1 返却) |
0 ≦ fromIndex < 要素数 | 先頭から |
fromIndex < 0 | 末尾からのオフセット (先頭位置より前の場合、先頭インデックス) (-1:末尾) |
存在確認比較
型 | 検索要素 | 配列内要素 | 結果 |
---|---|---|---|
任意 | 型が相違 | false (不一致) | |
Number【数値】 | NaN | NaN | true (一致) |
+0 | -0 | ||
-0 | +0 | ||
同じ値 | |||
その他 | false (不一致) | ||
Undefined型 | undefined | undefined | true (一致) |
未指定 | |||
Null型 | null | true (一致) | |
String【文字列】 | 長さもコードも一致 | true (一致) | |
その他 | false (不一致) | ||
Boolean【真偽値】 | true | true | true (一致) |
false | false | ||
その他 | false (不一致) | ||
Symbol【シンボル】 | 同じ値 | true (一致) | |
その他 | false (不一致) | ||
その他 Object | 同じ値 | true (一致) | |
その他 | false (不一致) |
例
const arrayPlus = [ 0, 1, 2, 3, 4, 5 ];
console.log( arrayPlus.includes(2) ); // 出力:true
console.log( arrayPlus.includes(2, 3) ); // 出力:false
const arrayMinus = [ -6, -5, -4, -3, -2, -1 ];
console.log( arrayMinus.includes(-4) ); // 出力:true
console.log( arrayMinus.includes(-4, -3) ); // 出力:false
const array = [ 0, NaN, , true ];
console.log( array.includes(NaN) ); // 出力:true
console.log( array.includes(undefined) ); // 出力:true
console.log( array.indexOf(NaN) ); // 出力:-1
console.log( array.indexOf(undefined) ); // 出力:-1
Array.prototype.indexOf【検索 (順方向)】
Array.prototype.lastIndexOf【検索 (逆方向)】
メモ
概要
- 要素を順方向・逆方向に検索 (未指定の要素は比較対象外)
- === 【同値 演算子】で比較
- 下記要素を検索する場合は、includes【存在確認】を使用
- NaN【非数】
- 未指定の要素
関連
外部リンク
- ECMA-262 (英語)
Array.prototype.indexOf ( searchElement [ , fromIndex ] ) ES2024 (15) ES2023 (14) ES2022 (13) Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] ) ES2024 (15) ES2023 (14) ES2022 (13)
構文
array.indexOf( searchElement[, fromIndex] )
array.lastIndexOf( searchElement[, fromIndex] )
一致要素インデックス (-1:一致なし)
searchElement検索要素
fromIndex検索開始インデックス (詳細は下記参照)
fromIndex | 説明 |
---|---|
省略 | 0 (先頭) |
要素数 ≦ fromIndex | 検索失敗 (-1 返却) |
0 ≦ fromIndex < 要素数 | 先頭から |
fromIndex < 0 | 末尾からのオフセット (先頭位置より前の場合、先頭インデックス) (-1:末尾) |
例
const array = ["one", "same", "same", null, NaN, "six"];
// [0] [1] [2] [3] [4] [5]
// [-6] [-5] [-4] [-3] [-2] [-1]
// indexOf【検索 (順方向)】
// 一致あり
console.log( array.indexOf("same") ); // 出力:1
console.log( array.indexOf("same", 1) ); // 出力:1
console.log( array.indexOf("same", -5) ); // 出力:1
console.log( array.indexOf("same", -99) );// 出力:1
console.log( array.indexOf("same", 2) ); // 出力:2
console.log( array.indexOf(null) ); // 出力:3
// 一致なし
console.log( array.indexOf("same", 3) ); // 出力:-1
console.log( array.indexOf("same", -3) ); // 出力:-1
console.log( array.indexOf("sa") ); // 出力:-1
console.log( array.indexOf("same", 99) ); // 出力:-1
console.log( array.indexOf(NaN) ); // 出力:-1 (NaN === NaN) が false の為
// lastIndexOf【検索 (逆方向)】
// 一致あり
console.log( array.lastIndexOf("same") ); // 出力:2
console.log( array.lastIndexOf("same", 2) ); // 出力:2
console.log( array.lastIndexOf("same", -4) ); // 出力:2
console.log( array.lastIndexOf("same", 1) ); // 出力:1
console.log( array.lastIndexOf("same", -5) ); // 出力:1
console.log( array.lastIndexOf(null) ); // 出力:3
// 一致なし
console.log( array.lastIndexOf("same", 0) ); // 出力:-1
console.log( array.lastIndexOf("same", -6) ); // 出力:-1
console.log( array.lastIndexOf("sa") ); // 出力:-1
console.log( array.lastIndexOf("same", -99) ); // 出力:-1
console.log( array.lastIndexOf(NaN) ); // 出力:-1 (NaN === NaN) が false の為