JavaScriptで配列を比較する3つの方法
JavaScriptで配列を比較する方法
浅い比較(===)
最も簡単な方法は、===
演算子を使うことです。これは、配列の要素が同じ値かどうかを比較します。ただし、要素の順序は考慮されません。
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(arr1 === arr2); // true
この例では、arr1
とarr2
は同じ要素を持っているため、true
が出力されます。
深い比較(JSON.stringify)
JSON.stringify
を使って、配列をJSON文字列に変換してから比較する方法もあります。これは、要素の値と順序の両方を比較します。
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(JSON.stringify(arr1) === JSON.stringify(arr2)); // true
ライブラリの使用
Lodashなどのライブラリを使って、配列を比較することもできます。ライブラリを使うと、より柔軟な比較を行うことができます。
import _ from 'lodash';
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(_.isEqual(arr1, arr2)); // true
この例では、Lodashの_.isEqual
関数を使って、arr1
とarr2
を比較しています。
JavaScriptで配列を比較するには、いくつかの方法があります。それぞれの方法のメリットとデメリットを理解して、状況によって使い分けることが重要です。
浅い比較
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(arr1 === arr2); // true
深い比較
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(JSON.stringify(arr1) === JSON.stringify(arr2)); // true
ライブラリの使用
import _ from 'lodash';
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(_.isEqual(arr1, arr2)); // true
- 配列の要素がオブジェクトの場合、
===
演算子やJSON.stringify
では比較できません。オブジェクトの比較には、_.isEqual
などのライブラリを使う必要があります。 - 配列の順序を比較したい場合は、
_.sortBy
などのライブラリを使って、配列をソートしてから比較する必要があります。
補足
===
演算子は、値と型が一致する場合にのみtrue
を返します。JSON.stringify
は、オブジェクトをJSON文字列に変換します。- Lodashは、JavaScriptのユーティリティライブラリです。
練習問題
以下のコードを参考に、arr1
とarr2
が等価かどうかを判断するコードを書いてください。
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 4];
ヒント
===
演算子、JSON.stringify
、またはライブラリを使用することができます。
解答
console.log(arr1 === arr2); // false
console.log(JSON.stringify(arr1) === JSON.stringify(arr2)); // false
import _ from 'lodash';
console.log(_.isEqual(arr1, arr2)); // false
JavaScriptで配列を比較するその他の方法
自作関数を使う
配列の要素を一つずつ比較していく自作関数を作成する方法です。
function compareArrays(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false;
}
for (let i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i]) {
return false;
}
}
return true;
}
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(compareArrays(arr1, arr2)); // true
この例では、compareArrays
という自作関数を作成して、配列の要素を一つずつ比較しています。
reduce
を使って、配列を比較する方法です。
function compareArrays(arr1, arr2) {
return arr1.reduce((acc, cur, i) => acc && cur === arr2[i], true);
}
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(compareArrays(arr1, arr2)); // true
この例では、reduce
を使って、配列の要素を一つずつ比較しています。
function compareArrays(arr1, arr2) {
return arr1.every((element, i) => element === arr2[i]);
}
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(compareArrays(arr1, arr2)); // true
javascript arrays json