如何比较javascript中的值

时间:2013-09-16 14:56:05

标签: javascript json compare

我从某些ajax操作获取数据,并尝试使用javascript实际进行一些条件检查

所以当我打印来自ajax的响应时

document.write(response)

结果

[object Object]

当我打印类似document.write(JSON.stringify(response))

的内容时

结果

{"status":"failed","login":["This field is required."],"password":["This field is required."]}

所以上面是我得到的实际数据是

if(response.status === 'failed')
            window.location.href = response.next;
        else if ('login' in response && response['login']==["This field is required."])
           {
              $("#message").html(<p>Username is required</p>); 
           }
        else if ('password' in response && response['password']==["This field is required."])
           {
              $("#message").html(<p>Password is required</p>); 
           }

&&条件response['login']==["This field is required."]无效 那么如何在javascript中检查上面类型的值?

注意: * javascript *

的新功能

7 个答案:

答案 0 :(得分:1)

请尝试此验证。它比较login数组的第一个位置。

response['login'][0] == "This field is required."

答案 1 :(得分:1)

使用点运算符访问响应对象的不同属性。

response.login[0] === "This field is required."

只是为了让你知道这里发生了什么 - 你得到了一个json对象。可以通过简单的使用.PropertyName来访问json对象中的属性。您的登录属性是一个数组,并且您要访问数组中的第一个项目,因此您使用[0]索引器。最后,你要比较字符串,所以javascript中的最佳实践是使用===运算符,它将比较类型和值。

答案 2 :(得分:1)

因为数组不等于另一个数组。请检查response['login'][0]以比较字符串。

> var array1 = ['array'];

> array1 == ['array']
< false

> array1[0] == 'array'
< true

答案 3 :(得分:0)

删除[]。这是阵列。你必须与字符串比较

答案 4 :(得分:0)

JSON基本上是Javascript语法的可传输格式。你在比较错误的东西。一旦JSON字符串在Javascript中解码,它就变成 NATIVE javascript对象/数组。因此,鉴于你的样本JSOns tring,你应该做

(response.password[0] == 'This field is required')

请注意“此字段...”文字周围缺少[]括号。您的代码实际上是

if (string == array)

什么时候应该

if (string == string)

(对比较成员使用相同的位置)。

答案 5 :(得分:0)

你可以试试这个: -

response['login'][0] == "This field is required."

答案 6 :(得分:0)

您无法将JavaScript中的数组与==进行比较。

就像这样:{} == {} // false两个对象不一样。

所以你也期望:new Foo() == new Foo(); // false

并且类似地:new Array() == new Array() // false

[]new Array()的简写(它有点复杂,但暂时忽略它)。