2015-11-28 15 views
0
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的值,如果是負載「是知道了」其他負載「未找到對象」。我確實得到了比賽,但它也加載了「未找到對象」2次,我不知道爲什麼?它不應該加載else條件,因爲我在我的json對象中匹配。獲得對象數據,負載2的條件,同時

如何使這個功能,如果匹配負載「是」如果沒有負載else條件。(負載一次)

Demo

+0

更換與'如果(在JSON _id){}' – samsonthehero

回答

0

因爲你的循環,你發現你的結果,即使之後執行,你得到「找不到對象」消息。你應該離開你的循環,一旦你找到了你想要的結果,並實現這一點,你可以使用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"); 
    } 
} 
+0

的ID將改變取決於什麼,我需要檢查,如果我的ID是displayImage2它將加載循環「再次找不到物體」。有沒有其他方式,如果檢查匹配不加載其他條件? – Jung

+0

更新了我的答案中的邏輯,希望這是你的期望。 –

+0

感謝這是什麼需要〜真的很感激。 – Jung

0

後,您可以使用Array.prototype.some()

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');