通过JSON对象循环后动态分配变量
Dynamically Assign Variables after looping through JSON object
可能是初学者的问题,但我有一个数组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()
}
任何帮助都是感激的。谢谢。
试着翻转这个问题,就像为一个科学实验定义一个"零假设":要反驳所有项都说"NO",你只需要找到一个不说"NO"的值。
这意味着您只需要在循环中进行简单的检查就可以找到答案:
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
循环中的位置稍后可能会引起混淆,但我保留了它的原样,只做回答您特定问题的更改。)
试试这个:)
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();
}
相关文章:
- 动态分配GA增强型电子商务跟踪器
- 动态分配类“;不是构造函数”;
- 如何使用Handlebars在父视图中动态分配部分视图
- 在运行时使用预先确定的对象分配变量
- 将动态javascript变量附加到HTML标记.InnerHTML&insertAdjacentHTML都不正
- 动态jQuery变量名
- Angular UI Bootstrap Datepicker动态日期(变量)
- 重新分配变量和重新定义之间的性能差异
- 如何从控制台动态设置变量
- 角度:动态分配ng选项,奇怪的行为
- 如何为跨度动态分配宽度
- Javascript:在对象中分配变量时命名函数的好处
- Angularjs 控制器在服务方法返回之前从服务中分配变量
- 基于当前内部HTML创建动态jQuery变量名称
- 在 JavaScript 中的 for 循环中重新分配变量的目的是什么?
- 按设置的数量拆分字符串,并为拆分分配变量
- 具有动态 PHP 变量的绘图点
- 在 Google Apps 脚本中动态定义变量名称和赋值
- 动态分配 Javascript 变量.[摆脱 eval()]
- 通过JSON对象循环后动态分配变量