JavaScript - 配列に追加する前に重複チェックを行う
JavaScript で配列にデータを追加する前に、 重複チェックを行う場合は、indexOf() メソッドを利用すると便利です。
ここでは、重複しないデータのみを「配列の末尾に追加する関数」と、 「配列の先頭に追加する関数」のサンプルコードを紹介します。
indexOf() メソッドの機能
indexOf() メソッドは、「指定した値を持つ要素」を配列中から検索します。
見つかった場合は最初に見つかった要素のインデックスを返し、 見つからなかった場合は -1 を返します。
var arr = [1, 3, 5, 7, 9];
console.log(arr.indexOf(5)); // 2
console.log(arr.indexOf(10)); // -1 重複していない場合
この indexOf() メソッドの機能を重複チェックに利用します。
重複してないデータを配列の末尾に追加
重複していないデータを配列の「末尾」に追加する関数のサンプルコードは次のようになります。
indexOf() メソッドで重複チェックをし、push() メソッドで末尾に追加します。
// 重複してないデータを配列の末尾に追加
function pushData(array, value){
if (array.indexOf(value) == -1){
array.push(value);
}
return true;
}
使用例
var arr = [1, 3, 5, 7, 9];
pushData(arr, 2);
pushData(arr, 5);
console.log(arr); // Array [ 1, 3, 5, 7, 9, 2 ]
重複してないデータを配列の先頭に追加
重複していないデータを配列の「先頭」に追加する関数のサンプルコードは次のようになります。
indexOf() メソッドで重複チェックをし、unshift() メソッドで末尾に追加します。
// 重複してないデータを配列の先頭に追加
function unshiftData(array, value){
if (array.indexOf(value) == -1){
array.unshift(value);
}
return true;
}
使用例
var arr = [1, 3, 5, 7, 9];
unshiftData(arr, 1);
unshiftData(arr, 4);
console.log(arr); // Array [ 4, 1, 3, 5, 7, 9 ]