JavaScriptで配列内から重複文字を含まない一意の文字列を検索する方法
重複した文字を含む可能性がある、次のような文字列の配列があったとします。
const arr = ['54gdgdfe3', '434ffd', '43frdf', '43fdhnh', 'wgcxhjny', 'fsdf34'];
ここで求められているのは、このような配列を引数として受け取り、重複する文字を1つも含まない最初の要素を返すJavaScript関数を作成することです。
もし該当する文字列が1つも存在しない場合は、falseを返す必要があります。
コード例
以下が実際のコードです。
const arr = ['54gdgdfe3', '434ffd', '43frdf', '43fdhnh', 'wgcxhjny',
'fsdf34'];
const isUnique = str => {
return str.split('').every(el => str.indexOf(el) ===
str.lastIndexOf(el));
};
const findUniqueString = arr => {
for(let i = 0; i < arr.length; i++){
if(isUnique(arr[i])){
return arr[i];
};
};
return false;
};
console.log(findUniqueString(arr));出力結果
コンソールには以下のように出力されます。
wgcxhjny
コードの解説
このコードは、役割の異なる2つの関数で構成されています。
- isUnique関数: 文字列を
split('')で1文字ずつ分割し、各文字についてindexOf()とlastIndexOf()の結果が一致するかどうかをevery()で判定します。両者の位置が一致していれば、その文字は文字列内に1回しか登場していないことを意味します。 - findUniqueString関数:
forループで配列を先頭から順番に走査し、isUnique()がtrueを返した時点でその要素を即座に返します。すべての要素を調べても該当するものが見つからなければ、falseを返します。
今回の例では、配列内で「wgcxhjny」だけがすべて異なる文字で構成されているため、これが最初の一意な文字列として返されます。
-
JavaScript配列から一意の値(重複なし)を取得する方法
JavaScriptの配列に含まれる重複した値を取り除き、一意の値(ユニークな値)だけを取得したい場合は、Setオブジェクトを使うのが最もシンプルで効率的な方法です。 Setは同じ値を1つしか格納できないデータ構造のため、配列をnew Set()に渡すだけで自動的に重複が排除されます。その後、スプレッド構文([...set])を使えば、簡単に元の配列形式へ戻すことができます。 サンプルコード 以下は、JavaScriptの配列からすべての一意の値を取得する実際のコード例です。 <!DOCTYPE html> <html lang=ja> <head> <
-
【JavaScript】配列の中で左右の合計が等しくなる中央インデックス(ピボットインデックス)を見つける方法
問題数値の配列 arr が与えられたとき、「あるインデックスより左側にあるすべての要素の合計」と「そのインデックスより右側にあるすべての要素の合計」が等しくなる位置(中央インデックス/ピボットインデックス)を求める JavaScript 関数を作成します。該当するインデックスが複数存在する場合は、最初に見つかったものを返し、存在しない場合は -1 を返すのが一般的です。たとえば、次のような入力を考えます。入力const arr = [1, 7, 3, 6, 5, 6];出力const output = 3;出力の解説インデックス 3 の要素は nums[3] = 6 です。この要素の左側にある