JavaScriptで配列を比較する方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptで配列を比較する方法について現役エンジニアが解説しています。配列にはデータがある場所を指し示すメモリ上のアドレスが入っているので要素を比較するには、for文などで繰り返して処理するか、JSON文字列にエンコードして比較する必要があります。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

JavaScriptで配列を比較する方法について解説します。

実際のコードをもとに解説していきますので、理解を深めていきましょう。

また、入門向けのJavaSriptを学習できるサイトも紹介しているので、合わせてご覧ください。

 

なお本記事は、オンラインブートキャンプ フロントエンドコース(JavaScript・jQuery講座)の内容をもとにしています。

 

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

JavaScriptで配列を比較する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

比較演算子で比較出来ない理由

配列の比較には == や === では正常な比較が行なえません。

配列を格納した変数は、配列の中身ではなく、配列内を参照するためのメモリ上のアドレスが代入されます。

 

//配列
var array1 = [10, 20, 30];
var array2 = [10, 20, 30];

//比較
var result = (arr1 == arr2);
console.log(result); // false

 

配列を比較する方法

配列を比較するにはいくつか方法があります。

for文による要素の個別比較・JSON文字列に変換しての比較などがあります。

 

[PR] JavaScript・jQueryで挫折しない学習方法を動画で公開中

実際に書いてみよう

for文を用いて配列の各要素を一つずつ繰り返し処理していく方法です。

要素ごとに判定を変えたい場合などにも有効な方法です。

 

var array1 = [10, 20, 30];
var array2 = ["10", 20, "30"];

for (var i = 0, array1.length; i < array1.length; ++i) {

//要素の型も厳密に比較したい場合は === or !== を使用します。

if (array1[i] === array2[i]) {

console.log("等しい要素です。");

} else if (array1[i] == array2[i]) {

console.log("型が異なる要素です。");

} else {

console.log("異なる要素です。");

}

 

JSON.stringifyを用いて配列をJSON文字列に変換して比較をします。

変換の際に、型の種類も正確になります。

また参照先がnullやundefinedなどの場合でもエラーにならずに変換されます。
 

var array1 = [10, 20, 30];

var array2 = [10, 20, 30];

var array3 = null;

JSON.stringify(array1) == JSON.stringify(array2); // true

JSON.stringify(array1) == JSON.stringify(array3); // false

 

筆者プロフィール

水野大輝(みずのたいき)
2014年より、某物流会社のシステム開発担当として入社。

未経験ながら、社内システム保守~新規受注システム開発まで携わり、JavaScript Ruby on Rails PostgreSQLなどの経験を積む。
現在も、開発案件に携わりながら、日々勉強中。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

また、TechAcademyではJavaScriptを使ってWebサービスを公開できるオンラインブートキャンプ フロントエンドコース(JavaScript・jQuery講座)を開催しています。

プログラミングの初心者でも受講可能です。Webサイトの表現の幅を広げたいという方はぜひご覧ください。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。