在JS循环中动态创建JSON密钥

时间:2016-12-12 10:25:37

标签: javascript json

我有这个带有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},
        }
    }
  }

3 个答案:

答案 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进行迭代,并生成包含所需结果的新属性。

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:2)

你首先制作一个javascript对象。

var object = {};

然后,您可以通过数组访问来编辑属性(object.something)。

 object.something == object['something']

所以要在对象中设置一个值,你可以

  object['something'] = array_counter

不确定你想要什么,所以我将arrayinfying添加到一个对象并将其作为对象放入。

&#13;
&#13;
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;
&#13;
&#13;