以下代码无法按预期运行。它从不检查主列表中的服务器。难道我做错了什么?
var servers = [];
$.serverlist.addServers = function(jsonData) {
for (var server in servers) {
if (server["ID"] == jsonData["ID"]) {
// server exists, dont add, just update
} else {
//server doesnt exist, just add it
}
}
我收到的jsonData
格式如下:
{ "ID": 1, "something else": "Value", "another key": "Key Val" }
因此,当它进入数组时,数组状态(如果有多个添加)
[
0:
{
"ID":1,
"something else": "Value",
"another key": "Key Val"
}
1:
{
"ID":2,etc...
}
]
答案 0 :(得分:0)
尝试测试数组长度。
if( servers.length > 0 ){
// Server exist!
console.log("Append!");
}else{
// Doesn't...
console.log("Create the array.");
}
修改强>
对于特定对象,应该这样做:
if( servers.indexOf(jsonData["ID"]) != -1 ){
// Data is in array
console.log("It's there.");
}else{
// Doesn't...
console.log("It's not there.");
}
第二次编辑
我做了CodePen它应该是什么样子 但是我不确定你的数据......当你控制登录它时它看起来像DOM对象格式 我认为它与json或对象不同......
我根据一组对象制作了我的例子。 查看CodePen控制台。
var servers = [
{
"ID":1,
"something else": "Value",
"another key": "Key Val"
},
{
"ID":2,
"something else": "another Value",
"another key": "another Key Val"
},
{
"ID":3,
"something else": "Boring Value",
"another key": "Interesting!"
},
{
"ID":4,
"something else": "arrggg.",
"another key": "Yeah!"
}
];
for(i=0;i<servers.length;i++){
var temp = servers[i];
if (temp.ID== 3){
console.log("Found!");
break; // Exits the loop when found ID = 3
}else{
console.log("NOT fount yet... Still checking.");
}
}