JavaScriptで名前が重複していない場合のみ配列にオブジェクトを追加する方法
JavaScriptでは、配列内に同じ名前のデータがまだ存在しない場合にだけ、新しいオブジェクトを追加したいケースがあります。このような処理を実現するには、要素を追加するpush()メソッドと、繰り返し処理を行うforEach()メソッドを組み合わせて使います。
まず、既存のオブジェクト配列と、追加候補となる名前のリストを用意します。その後、forEach()で各名前を順番にチェックし、find()で既存の配列内に同じ名前が存在するかどうかを確認します。存在しない場合にのみ、push()で新しいオブジェクトを追加します。
コード例
var details = [{name:"John"},{name:"David"}]
var addObject = ["Mike","Sam"];
addObject.forEach( obj1 => {
if(!details.find( obj2 => obj2.name === obj1 ))
details.push({name:obj1})
})
console.log(details);
このプログラムを実行するには、Node.js環境で以下のコマンドを使用します −
node fileName.js
ここでは、ファイル名を「demo165.js」としています。
出力結果
上記のコマンドを実行すると、コンソールに以下のような出力が表示されます −
PS C:\Users\Amit\javascript-code> node demo165.js
[
{ name: 'John' },
{ name: 'David' },
{ name: 'Mike' },
{ name: 'Sam' }
]
処理のポイント
- forEach():追加候補の配列(addObject)の各要素に対して、順番に処理を実行します。
- find():既存のdetails配列の中から、条件に一致する要素を探します。見つからない場合はundefinedを返します。
- push():同じ名前が見つからなかった場合にのみ、新しいオブジェクト{name: 名前}を配列の末尾に追加します。
なお、より簡潔に書きたい場合は、some()メソッドやSetオブジェクトを使う方法もありますが、基本的なロジックはこの例と同様に「存在チェック → 条件付きで追加」という流れになります。重複チェックを頻繁に行う大規模なデータでは、パフォーマンス面からSetの活用も検討するとよいでしょう。
-
JavaScriptでオブジェクトを新しい配列に変換する方法
JavaScriptでは、オブジェクトのプロパティやネストされたデータを取り出し、扱いやすい形で新しい配列にフォーマットできます。本記事では、学校(school)オブジェクトに含まれる生徒情報を、文字列形式の配列へ変換する実践的なコード例を紹介します。 ポイントとなるテクニック このサンプルでは、以下の2つのJavaScript機能を活用しています。 分割代入(Destructuring assignment):オブジェクトから特定のプロパティを簡潔に取り出す構文です。 for...of ループ:配列内の各要素を順番に処理するために使用します。 コード例 <!DOCTYPE html
-
JavaScriptで配列内オブジェクトのプロパティ名を置き換える方法
JavaScriptでオブジェクト配列のプロパティ名を置き換える方法 JavaScriptでは、map()メソッドを活用することで、配列に含まれる各オブジェクトのプロパティ名を別の名前に簡単に置き換えることができます。map()は元の配列を変更せずに新しい配列を生成するため、安全かつ効率的なデータ変換処理に適しています。 以下は、オブジェクト配列のプロパティ名 name を fullName に置き換えるサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta