どうも、ちょげ(@chogetarou)です。
連想配列(Associative array)に値(value)が存在するかどうか確認する方法を紹介します。
方法

連想配列(Associative array)の値(value)の存在チェックする方法は、 ObjectとMapで異なります。
Objectの場合
Object(オブジェクト)の値(value)の存在チェックする方法は、2つあります。
includes()
1つは、includes()を使う方法です。
まず、Objectからvalues()を呼び出します。
values()の引数に、対象のオブジェクトを指定します。
そして、values()からincludes()を呼び出します。
includes()の引数に値(value)を指定します。
//obj=対象のオブジェクト, value=値
Object.values(obj).includes(value)
上記のincludes()は、対象のObject(オブジェクト)に引数の値(value)が存在すれば「true」、存在しなければ「false」を返します。
使用例
function checkValueExists(obj, value) {
return Object.values(obj).includes(value)
}
const nums = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5,
}
console.log(checkValueExists(nums, 3))
console.log(checkValueExists(nums, 10))
console.log(checkValueExists(nums, 1))
出力:
true
false
true
indexOf()
もう1つは、indexOf()を使う方法です。
まず、Objectからvalues()を呼び出します。
values()の引数に、対象のオブジェクトを指定します。
次に、values()からindexOf()を呼び出します。
indexOf()の引数に値(value)を指定します。
そして、indexOf()の結果が「−1」より大きいかどうか調べます。
//obj=対象のオブジェクト, value=値
Object.values(obj).indexOf(value) > -1
上記のindexOf()の結果が「-1」より大きければ、対象のObject(オブジェクト)に値(value)は存在します。
indexOf()の結果が「-1」以下ならば、対象のObject(オブジェクト)に値(value)は存在しません。
使用例
function checkValueExists(obj, value) {
return Object.values(obj).indexOf(value) > -1
}
const nums = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5,
}
console.log(checkValueExists(nums, 3))
console.log(checkValueExists(nums, 10))
console.log(checkValueExists(nums, 1))
出力:
true
false
true
Mapの場合
Map(マップ)の値(value)の存在チェックする方法は、2つあります。
includes()
1つは、includes()を使う方法です。
まず、values()を使って、Mapの値を配列に変換します。
そして、Mapの値を変換した配列からincludes()を呼び出します。
includes()の引数に値(value)を指定します。
//map=対象のMap, value=値
[...map.values()].includes(value)
上記のincludes()は、対象のMap(マップ)に引数の値(value)が存在すれば「true」、存在しなければ「false」を返します。
使用例
function checkValueExists(map, value) {
return [...map.values()].includes(value)
}
const nums = new Map();
nums.set("one", 1)
nums.set("two", 2)
nums.set("three", 3)
nums.set("four", 4)
nums.set("five", 5)
console.log(checkValueExists(nums, 3))
console.log(checkValueExists(nums, 10))
console.log(checkValueExists(nums, 1))
出力:
true
false
true
indexOf()
もう1つは、indexOf()を使う方法です。
まず、values()を使って、Mapの値を配列に変換します。
次に、Mapの値を変換した配列からindexOf()を呼び出します。
indexOf()の引数に値(value)を指定します。
そして、indexOf()の結果が「-1」より大きいか調べます。
//map=対象のMap, value=値
[...map.values()].indexOf(value) > -1
上記のindexOf()の結果が「−1」より大きければ、Map(マップ)に値は存在します。
indexOf()の結果が「−1」以下であれば、Mapに値は存在しません。
使用例
function checkValueExists(map, value) {
return [...map.values()].indexOf(value) > -1
}
const nums = new Map();
nums.set("one", 1)
nums.set("two", 2)
nums.set("three", 3)
nums.set("four", 4)
nums.set("five", 5)
console.log(checkValueExists(nums, 3))
console.log(checkValueExists(nums, 10))
console.log(checkValueExists(nums, 1))
出力:
true
false
true
まとめ
連想配列(Associative array)の値(value)の存在チェックをする方法は、ObjectとMapで異なります。
- Objectの場合
- includes()を使う方法
Object.values(obj).includes(value)
- indexOf()を使う方法
Object.values(obj).indexOf(value) > -1
- includes()を使う方法
- Mapの場合
- includes()を使う方法
[...map.values()].includes(value)
- indexOf()を使う方法
[...map.values()].indexOf(value) > -1
- includes()を使う方法
コメント