【问题标题】:Construct a JavaScript object dynamically动态构造一个 JavaScript 对象
【发布时间】:2013-03-30 09:32:51
【问题描述】:

我想填充对象数组,以便将数组附加到网格。这是我需要的格式:

data.push({ id: 1, values: { "country": "uk", "age": 33, "name": "Duke", "firstname": "Patience", "height": 1.842, "email": "patience.duke@gmail.com", "lastvisit": "11\/12\/2002" } });

我有 values 的键值对,我不确定如何在循环中构造上述对象...??

编辑:

到目前为止我有这个,但我只是添加值,而不是它们各自的键:

var recordValues = [];
//for loop iterator
recordValues.push(colValues[colCount]);
//end for

data.push({ id: recordID, values: recordValues });

colValues 包含以下内容:“uk”、33、“Duke”...对象中所有可能的值..

【问题讨论】:

  • 你能告诉我们你开始使用的数据的结构吗?
  • 请不要将 JavaScript 对象与 JSON 对象混淆。
  • @AnthonyGrist 我已经进行了编辑。
  • 你应该看看这个答案:stackoverflow.com/a/351723/218196。
  • @faizanjehangir 我真正想看到的是colValues 的样子;不知道很难说出你是如何从那个结构变成你想要的结构的。

标签: javascript


【解决方案1】:

如果理解正确:

var data = [];
for (var i = 0; i < people.length; i++) {
    var person = people[i];
    data.push({ 
        id : i + 1,
        values : { 
            country : person.country, 
            age : person.age, 
            name : person.surname, 
            firstname : person.firstname, 
            height : person.height, 
            email : person.email,
            lastvisit : person.lastvisit 
        }
    });
}

【讨论】:

  • 是的,这是需要的,但我需要一个对象来封装值的所有字段..
【解决方案2】:
for (var key in keyValuePairs) {
  if (keyValuePairs.hasOwnProperty(key)) {
    data.push({ id: key, values:keyValuePairs[key]);
  }
}

hasOwnProperty 过滤掉原型属性

【讨论】:

    【解决方案3】:

    你可以这样做:

    var recordValues = [];
    for (var value in colValues) {
       recordValues.push(colValues[value]);
    }
    
    data.push({ id: recordID, values: recordValues });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      相关资源
      最近更新 更多