JavaScriptの_isEqual()メソッドとは?オブジェクト比較における重要性を解説
_isEqual()メソッドとは
_isEqual()は、JavaScriptのライブラリであるUnderscore.jsおよびLodashに用意されているメソッドで、2つのJavaScriptオブジェクトが等しいかどうかを比較するために使用されます。
このメソッドの最大の特徴は、オブジェクトを比較する際にプロパティの並び順を考慮しないという点です。2つのオブジェクトが持つプロパティの内容が一致しているかどうかだけを判定します。
一方、オブジェクト比較によく使われるJSON.stringify()では、オブジェクトを文字列に変換してから比較するため、プロパティの順序まで厳密にチェックされてしまいます。つまり、中身が同じでもプロパティの並び順が異なるだけで「等しくない」と判断されます。この点からも、オブジェクト同士の比較には_isEqual()の方が適しているといえます。
構文
_.isEqual(object1, object2);
引数として2つのオブジェクトを受け取り、両者が等しい場合はtrue、等しくない場合はfalseを返します。
例1:基本的な使い方
<html>
<head>
<script src =
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js">
</script>
</head>
<body>
<script>
var obj1 = {name: "Sikha", designation: "Content developer"};
var obj2 = {name: "Sikha", designation: "Content developer"};
document.write(_.isEqual(obj1, obj2));
</script>
</body>
</html>
出力結果
true
この例では、obj1とobj2が持つプロパティの名前・値がすべて一致しているため、trueが返されます。
例2:JSON.stringify()との比較
次の例では、プロパティの並び順が異なる2つのオブジェクトを、_isEqual()とJSON.stringify()の両方で比較しています。_isEqual()はプロパティの順序を気にしないためtrueを返しますが、JSON.stringify()は順序までチェックするためfalseを返します。
<html>
<head>
<script src =
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js">
</script>
</head>
<body>
<script>
var obj1 = {name: "Sikha", designation: "Content developer"};
var obj2 = {designation: "Content developer", name: "Sikha"};
document.write(_.isEqual(obj1, obj2));
document.write("</br>");
document.write(JSON.stringify(obj1) === JSON.stringify(obj2));
</script>
</body>
</html>
出力結果
true false
-
JavaScriptの_.size()メソッドとは?配列のサイズを取得する方法を解説
_.size()メソッドとは_.size()は、JavaScriptの定番ユーティリティライブラリであるunderscore.jsに用意されている関数です。主に配列の要素数(サイズ)を取得するために使われます。このメソッドを使用する前に、underscore.jsのCDNをページに読み込んでおく必要がある点に注意してください。構文_.size(array);例1:通常の配列の場合次の例では、数値を格納した通常の配列を_.size()メソッドに渡し、配列のサイズを取得しています。<html> <body> <head> <script src =
-
JavaScriptのpadStart()メソッドとは?文字列の先頭にパディングを追加する方法を解説
padStart()メソッドとはJavaScriptでは、concat()メソッドを使うことで2つの文字列を連結できます。しかし、元の文字列の先頭に特定の文字列を追加したい場合、最も簡単な方法がstring.padStart()メソッドです。このメソッドは、単に文字列を先頭に追加するだけでなく、追加後の合計文字数も管理してくれます。引数は2つあり、1つ目は目標となる長さ(length)、2つ目は追加する文字列です。指定された長さに達するまで、2つ目の文字列が元の文字列の先頭に繰り返し追加されます。構文string.padStart(length, string);length:結果として得られ