可能是一个初学者问题,但我有一个数组json对象,我正在循环以提取某些值。如果这些值等于“NO”,那么我想使用jquery隐藏div。这应该很简单,但我不知道数组可以包含多少项,所以我必须确保动态获取所有数/值对。
我的JSON类似于以下内容:
"account" : [{
"ID":1,
"transferAllowed": "NO"
},{
"ID":2,
"transferAllowed": "YES"
}]
我的循环:
//define variable that references the values I need from the json object
var account = this.json.account;
for ( var i = 0; i < account.length; i++ ) {
//compare all values of transferAllowed however many that may be. If they all equal No, then hide div with jquery $("#div").hide()
}
感谢任何帮助。感谢。
答案 0 :(得分:0)
试试这个:)
var account = this.json.account;
var hide_count = 0;
for ( var i = 0; i < account.length; i++ ) {
if(account[i].transferAllowed=="NO") hide_count++;
}
if(hide_count == account.length){
$("#div").hide();
}
答案 1 :(得分:0)
尝试翻转问题,例如定义&#34; null假设&#34;对于一个科学实验:反驳所有项目都说&#34; NO&#34;,你只需要找到不说&#34的单个值34; NO&#34 ;.
这意味着您只需要在循环中进行简单检查即可找到答案:
var account = this.json.account;
// Start with the hypothesis that everything will say "NO"
var allDisallowed = true;
for ( var i = 0; i < account.length; i++ ) {
if ( account[i].transferAllowed != "NO" ) {
// Hypothesis disproved!
allDisallowed = false;
}
}
if ( allDisallowed ) {
$("#div").hide();
}
由于您只需要一个值,您实际上可以使用break;
语句停在第一个
for ( var i = 0; i < account.length; i++ ) {
if ( account[i].transferAllowed != "NO" ) {
// Hypothesis disproved!
allDisallowed = false;
// No need to finish the loop
break;
}
}
或者,如果将循环包装在函数中,则可以保存定义一些变量:
function areAllDisallowed( account ) {
for ( var i = 0; i < account.length; i++ ) {
if ( account[i].transferAllowed != "NO" ) {
// At least one element is not a "NO", so result is false
return false;
}
}
// We will only reach this line if we never return false
// Therefore, we know that all elements say "NO"
return true;
}
if ( areAllDisallowed(this.json.account) ) {
$("#div").hide();
}
(正如评论中指出的那样,var i
循环中for
的位置可能会在以后引起混淆,但我已将其保留原样只进行回答的更改你的具体问题。)