Bae*_*ins 0 javascript for-loop
我有以下jquery/javascript函数从json数据获取值并将它们添加到变量:
function get_class_classes(data) {
var terms = data.terms, // setup shortcut data path
classList = ''; // setup blank var to add string values to
for (child = 0; child < terms.day.length; child++) {
classList += terms.day[child].slug + ' ';
}
for (child = 0; child < terms.medium.length; child++) {
classList += terms.medium[child].slug + ' ';
}
for (child = 0; child < terms.term.length; child++) {
classList += terms.term[child].slug + ' ';
}
for (child = 0; child < terms.type.length; child++) {
classList += terms.type[child].slug + ' ';
}
return classList;
}
Run Code Online (Sandbox Code Playgroud)
有没有for更简洁的方式来设置它,这意味着,将所有这些循环压缩成更简洁的东西?
这是我尝试过的:
function get_class_classes(data) {
var terms = data.terms, // setup shortcut
termsArray = ['day', 'medium', 'term', 'type'],
classList = ''; // setup blank var
for ( i=0; i < termsArray.length; i++ ) {
var currentTerm = termsArray[i];
for (child = 0; child < terms.currentTerm.length; child++) { // loop through each day, add term slug to daylis
classList += terms.currentTerm[child].slug + ' ';
}
}
return classList;
}
Run Code Online (Sandbox Code Playgroud)
这会返回错误: Uncaught TypeError: Cannot read property 'length' of undefined
我也移动var terms = data.terms到循环,这允许函数工作,但classList返回填充'undefined'而不是真正的值.
datadata 是一个json对象,松散地格式化以下内容,我从控制台复制:
terms: Object
day: Array[2]
0: Object
ID: 197
name: "Thursday"
slug: "thursday"
1: Object
medium: Array[1]
0: Object
ID: 200
name: "Painting"
slug: "painting"
/* Continues for variable amount of objects. Same is true for `term` and and `type` */
Run Code Online (Sandbox Code Playgroud)
如果您碰巧回答并知道为什么我的方法不起作用,那么对于将来的参考/思考过程来说,解释会很棒.
谢谢!
更改的访问terms.currentTerm.length是terms[currentTerm].length.这应该可以解决你的错误.
说明
for例如,在第一个循环的第一次迭代中,terms.currentTerm不访问terms.day.它会访问currentTerm您terms对象上指定的属性.此属性不terms存在 - 没有名为的属性currentTerm- 并且尝试访问length不存在的对象会产生错误.
如果要使用terms与currentTerm变量值相同的名称访问属性,请使用括号表示法,以便currentTerm改为使用的值:terms[currentTerm].口译员"读"这个terms['day'],这是你真正想要的.
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |