Pot.Struct.equals

{Boolean} Pot.Struct.equals ({Array|Object|*} object, {Array|Object|*} subject [, {Function} func])

Pot.js で利用可能。 PotLite.js では利用できません。

2 つのオブジェクトが同じ値を持つか比較します。

引数 object と 引数 subject が同じ値を持つか比較し、
同じ場合は 真 (true) が返り、違う場合は 偽 (false) が返ります。
比較は単純な === だけではなく、値を比較します。
任意に引数 func によって、比較する関数が指定できます。

Pot.globalize() が適応されている場合、Pot.equals() が equals() で実行できます。

object と subject が同じ値を持つ場合 true が返り、違う場合 false が返ります。

var obj1 = {foo: 10, bar: 20, baz: 30};
var obj2 = {foo: 10, bar: 20, baz: 30};
var obj3 = {a: 'hoge', b: 'fuga'};
Pot.debug(Pot.equals(obj1, obj2)); // true
Pot.debug(Pot.equals(obj1, obj3)); // false

var obj4 = {};
var obj5 = {};
Pot.debug(Pot.equals(obj4, obj5)); // true
var arr1 = [1, 2, 3];
var arr2 = [1, 2, 3];
var arr3 = [1, 2, 10];
Pot.debug(Pot.equals(arr1, arr2)); // true
Pot.debug(Pot.equals(arr1, arr3)); // false

var arr4 = [];
var arr5 = [];
Pot.debug(Pot.equals(arr4, arr5)); // true

var cmp = function(a, b) {
  return a == b ||
    String(a).toLowerCase() == String(b).toLowerCase();
};

var arr6 = [1, 2, 'foo', 'bar'];
var arr7 = ['1', 2, 'FOO', 'baR'];
Pot.debug(Pot.equals(arr6, arr7, cmp)); // true
var func1 = (function() {});
var func2 = (function() {});
var func3 = (function() { return this; });
Pot.debug(Pot.equals(func1, func2)); // true
Pot.debug(Pot.equals(func1, func3)); // false
var date1 = new Date();
var date2 = new Date(date1.getTime());
var date3 = new Date(date1.getTime() + 100);
Pot.debug(Pot.equals(date1, date2)); // true
Pot.debug(Pot.equals(date1, date3)); // false
var str1 = 'foobarbaz';
var str2 = 'foobarbaz';
var str3 = 'hoge';
Pot.debug(Pot.equals(str1, str2)); // true
Pot.debug(Pot.equals(str1, str3)); // false
var num1 = 12345;
var num2 = 12345;
var num3 = 12345.455512;
var num4 = 12345.443556;
var num5 = 12345.443556999;
Pot.debug(Pot.equals(num1, num2)); // true
Pot.debug(Pot.equals(num1, num3)); // false
Pot.debug(Pot.equals(num3, num4)); // false
Pot.debug(Pot.equals(num4, num5)); // true