这看起来很简单,但不确定我在这里做错了什么。
var data = "[{\"Id\":\"01\",\"Name\":\"01- Alabama\"},{\"Id\":\"02\",\"Name\":\"02- Arizona\"},{\"Id\":\"03\",\"Name\":\"03- Arkansas\"}]";
var myJson = JSON.parse(data);
for (var key in myJson) {
var item = {
Id: myJson[key].Id,
Name: myJson[key].Name
};
if(item.Id != "01" || item.Id !="02")
{
alert(item.Id);
}
}
我希望只显示一个警告“03”,但它为“01”,“02”和& “03”
看起来像!=和OR运算符不起作用?
答案 0 :(得分:7)
当||
运算符的两个操作数均为false
(并且在所有其他情况下为false
)时,true
运算符仅返回&&
。
当true
运算符的两个操作数均为true
(并且在所有其他情况下为false
)时,&&
运算符仅返回||
。
您必须在if条件中使用var data = "[{\"Id\":\"01\",\"Name\":\"01- Alabama\"},{\"Id\":\"02\",\"Name\":\"02- Arizona\"},{\"Id\":\"03\",\"Name\":\"03- Arkansas\"}]";
var myJson = JSON.parse(data);
for (var key in myJson) {
var item = {
Id: myJson[key].Id,
Name: myJson[key].Name
};
if(item.Id != "01" && item.Id !="02")
{
alert(item.Id);
}
}
代替{{1}}才能获得预期结果:
{{1}}
答案 1 :(得分:1)
实际上正在按预期工作,因为OR
运算符在true
和Id == 01
Id == 02
您要做的是使用AND运算符&&
连接两个操作数,这样就可以在Id != 01
AND Id != 02
时执行逻辑。< / p>
var data = "[{\"Id\":\"01\",\"Name\":\"01- Alabama\"},{\"Id\":\"02\",\"Name\":\"02- Arizona\"},{\"Id\":\"03\",\"Name\":\"03- Arkansas\"}]";
var myJson = JSON.parse(data);
for (var key in myJson) {
var item = {
Id: myJson[key].Id,
Name: myJson[key].Name
};
if (item.Id != "01" && item.Id != "02") {
alert(item.Id);
}
}
答案 2 :(得分:1)
item.Id != "01" || item.Id !="02"
将永远为真,因为它不能同时等于这两个值。
您只需使用&&
代替||
:
var data = "[{\"Id\":\"01\",\"Name\":\"01- Alabama\"},{\"Id\":\"02\",\"Name\":\"02- Arizona\"},{\"Id\":\"03\",\"Name\":\"03- Arkansas\"}]";
var myJson = JSON.parse(data);
for (var key in myJson) {
var item = {
Id: myJson[key].Id,
Name: myJson[key].Name
};
if(item.Id != "01" && item.Id !="02")
{
console.log(item.Id); // I prefer consoling, that's less agressive!
}
}
&#13;
⋅ ⋅ ⋅
如果您还打算if(item.Id != "01" && item.Id !="02" && item.Id !="03")
,则必须在字符串中使用>
比较器和一元+
:
var data = "[{\"Id\":\"01\",\"Name\":\"01- Alabama\"},{\"Id\":\"02\",\"Name\":\"02- Arizona\"},{\"Id\":\"03\",\"Name\":\"03- Arkansas\"}]";
var myJson = JSON.parse(data);
for (var key in myJson) {
var item = {
Id: myJson[key].Id,
Name: myJson[key].Name
};
if(+item.Id > 2)
{
console.log(item.Id); // I prefer consoling, that's less agressive!
}
}
&#13;
希望它有所帮助。