检查JavaScript中的对象是否相同

时间:2015-10-05 14:31:15

标签: javascript

似乎有很多关于Google和堆栈溢出的帖子,但是大多数都不是很具描述性,我只是很难理解。解决方案提供了所有关于使用外部库的讨论,我无法使用。

我有一个看起来与此类似(不完全)的JavaScript对象:

var test = {[{ "question": "What are you doing?", "id": 1, "answers": [
                { "answer": "Eating some pizza", "correct": true },
                { "answer": "Working on my PC", "correct": false },
                { "answer": "Sitting in a chair", "correct": true }
            ]}]}

显然这是一个数组,因为通常会有多个问题。现在我正在做的是尝试创建一个可以编辑测试的页面,但我想确保在将测试发送到后端进行处理之前已对测试进行了更改。如果未修改测试,则没有任何理由向服务器发送请求。这意味着如果任何字符已更改,则添加了空格,答案从正确更改为不正确,添加或删除了问题,则此方法将返回true。否则它将返回false。

我唯一允许在AngularJS中使用的第三方库。我尝试了angular.equals(x,y)方法,但没有得到正确的结果。

我曾经想过使用的一种理想方法是使用的方法如下:

function isEqual(obj1, obj2) {
    return (JSON.stringify(obj1) == JSON.stringify(obj2));
} 

但是,当添加值(例如空格" ")时,即使对象不同,它仍将返回true。在打印值时,似乎如果空格位于字符串的开头,则会对其进行修剪。 (与angular.equals相同的结果)但是如果在文本之间添加了空格,则检查返回false(如预期的那样)

那么用精确定位检查对象是否相等的最佳方法是什么?

如果所有答案都是原始的javascript,而不是使用外部库,那将不胜感激。

0 个答案:

没有答案