"use strict";
let obj1 = {
key: undefined
};
let obj2 = {
key: Symbol('')
};
// THIS SHOULD RETURN false
console.log(JSON.stringify(obj1) === JSON.stringify(obj2)); // true
ある場合、私はthe docを読んで、彼らは言った:まさにthe replacer parameterを使用して、そのケースのような2つのオブジェクトを比較するための別の方法があります。ただ、好き:
let replacer = function (key, value) {
if (value === undefined) {
// do stuff...
} else if (value['__proto__'].constructor.name === 'Symbol') {
// do stuff...
} else {
// do stuff...
}
return value;
};
私の質問:私はちょうど言及ようreplacer
を使用するよりもそれは速く、他の方法は何ですか?私はそのように多くのものを扱う原因を使用したくない。例えば
:私のような20個の機能がある場合:Symbol1()
、Symbol2()
、Symbol3()
... Symbol20()
を、私は再使用することになりif-else
文を何度。
でキーを比較し、全体のオブジェクトを比較する必要はありませんと思いますか?たとえば、http://stackoverflow.com/questions/25456013/javascript-deepequal-comparisonを参照してください。 – Blorgbeard
なぜ最初に 'JSON.stringify'を使用していますか? – Blender
btw私はあなたのコードを実行し、両方の構造体が '{}'に解決して、なぜそれが真を返すのかを判断します。 –