我有这个带有JSON变量的Javascript代码,效果很好。
var valuesJSON = {
projects: {
0: {value: 0, price: 0},
1: {value: 0, price: 0},
2: {value: 0, price: 0},
3: {value: 0, price: 0},
4: {value: 0, price: 0},
5: {value: 0, price: 0},
6: {value: 0, price: 0},
7: {value: 0, price: 0},
}
}
我想让它更具可扩展性,以便从常量中读取条目数。我尝试了以下内容,但不允许变量中的for循环。有什么想法吗?
const NUM_PROJECTS = 8
var valuesJSON = {
projects: {
for (var i=0; i < NUM_PROJECTS; i++) {
i: {value: 0, price: 0},
}
}
}
答案 0 :(得分:3)
您需要使用projects
循环向for
添加属性。需要使用Bracket notation,因为variable
被用作密钥。
//Create object
var valuesJSON = {
projects : {}
}
//Iterate and add properties
for (var i = 0; i < NUM_PROJECTS; i++) {
valuesJSON.projects[i] = {
value: 0,
price: 0
}
}
答案 1 :(得分:2)
您可以使用NUM_PROJECTS
进行迭代,并生成包含所需结果的新属性。
const NUM_PROJECTS = 8
var valuesJSON = { projects: {}};
for (var i = 0; i < NUM_PROJECTS; i++) {
valuesJSON.projects[i] = { value: 0, price: 0 };
}
console.log(valuesJSON);
&#13;
答案 2 :(得分:2)
你首先制作一个javascript对象。
var object = {};
然后,您可以通过数组访问来编辑属性(object.something)。
object.something == object['something']
所以要在对象中设置一个值,你可以
object['something'] = array_counter
不确定你想要什么,所以我将arrayinfying添加到一个对象并将其作为对象放入。
var json = {}
var projects = {};
var projectsArr = [];
for(c=0;c<100;c++) {
var project_entry = {
name: 'project'+c,
a:c+1,
b:c*2
};
projects[project_entry.name] = project_entry;
projectsArr.push(project_entry);
}
json['projects'] = projects;
json['projects_as_array'] = projectsArr;
console.log(JSON.stringify(json,null,2));
&#13;