var id = "displayImage1";
//my object
var json = {
displayImage1: {
object: "style1"
},
displayImage2: {
object: "style2"
},
displayImage3: {
object: "style3"
}
};
function JsonLoad(_id){
checkImgCanvas = _id;
for (var i in json) {
if(i === checkImgCanvas){
alert("yes got it");
}else{
alert("not object found");
}
}
}
我正在使用此函数来检查是否有任何json对象值与id值匹配,如果是,则加载“yes got it”,否则加载“not object found”。我确实得到了匹配,但它也加载了“未找到对象”2次,我不明白为什么?它不应该加载else条件因为我在我的json对象中匹配。
如果匹配加载“是”,如果没有加载其他条件,我该怎么做这个函数。(加载一次)
答案 0 :(得分:0)
由于你的for循环甚至在你找到你的结果之后就会执行,你得到的是#34;没有找到对象"信息。您应该在找到所需结果后退出循环并实现此目的,您可以在成功提醒消息后使用break;
function JsonLoad(_id){
var matchFound = false;
for (var i in json) {
if(i === _id) {
matchFound = true;
break;
}
}
if(matchFound) {
alert("yes got it");
}else{
alert("not object found");
}
}
答案 1 :(得分:0)
some()
方法测试数组中的某个元素是否通过了由提供的函数实现的测试。
var json = { displayImage1: { object: "style1" }, displayImage2: { object: "style2" }, displayImage3: { object: "style3" } };
function JsonLoad(_id) {
!Object.keys(json).some(function (k) {
if (k === _id) {
document.write('yes got it<br>')
return true;
}
}) && document.write('not object found<br>');
}
JsonLoad('displayImage0');
JsonLoad('displayImage1');