我有一个json对象,如图所示。
this.model = {
"cellType": "RemoveCell",
"maxWidth": "800px",
"items": {
"columns" : [
{"attribute": "existingStrings", "title": "Existing Strings"},
],
"rows" : [
{"existingStrings": this.stringList},
]
}
},
this.stringList是一个字符串数组(大小不一)。如何在JSON对象中声明this.stringList,使其在下面以这种方式运行?
this.model = {
"cellType": "RemoveCell",
"maxWidth": "800px",
"items": {
"columns" : [
{"attribute": "existingStrings", "title": "Existing Strings"},
],
"rows" : [
{"existingStrings": this.stringList[0]},
{"existingStrings": this.stringList[1]},
{"existingStrings": this.stringList[2]},
...
...
{"existingStrings": this.stringList[n]},
]
}
},
我想"行"包含一个对象数组(stringList中每个元素的一个对象)。感谢
答案 0 :(得分:4)
使用函数构建对象列表
this.model = {
"cellType": "RemoveCell",
"maxWidth": "800px",
"items": {
"columns" : [
{"attribute": "existingStrings", "title": "Existing Strings"},
],
"rows" :
(function(){
var objList = [];
for(var i = 0; i < this.stringList.length; i++)
objList.push({"existingStrings":this.stringList[i]});
return objList;
})()
}
},
这通过使用IIFE(立即调用的函数表达式)作为&#34;行&#34;的值来工作。 (function(){})
定义函数表达式。在表达式后面使用()
时,将调用该函数。函数内部是一个for循环,它使用this.stringList
构建一个对象数组。循环结束后,返回数组,这是分配给&#34; rows&#34;的值。
答案 1 :(得分:2)
var rows = [];
for ( var i=0; i<this.stringList.length; i++){
rows.push({"existingStrings":this.stringList[i]});
}
this.model = {
"cellType": "RemoveCell",
"maxWidth": "800px",
"items": {
"columns" : [
{"attribute": "existingStrings", "title": "Existing Strings"},
],
"rows" : rows
}
},