【问题标题】:how to create JavaScript object using a for loop?如何使用 for 循环创建 JavaScript 对象?
【发布时间】:2012-12-27 10:04:25
【问题描述】:

我有一个对象样本data:

[Object, Object, Object]
  0: Object
    test_id: "1"
    area: "high"
  1: Object
    test_id: "1"
    area: "saw"
  2: Object
    test_id: "2"
    area: "look"

我正在尝试通过按test_id 分组来创建一个新对象。

var obj = new Object();
$.each(data, function(k, v){
    obj[v.test_id] += {area: v.area};
});

这似乎不起作用,它只返回一个对象行...

我想得到类似的东西:

1: {
    {area: "high"}
    {area: "saw"}
}
2: {
    {area: "look""
}

有什么想法吗?谢谢

【问题讨论】:

  • 伙计,你在这几行代码中做了一些疯狂的事情! :)
  • @JohnDoe 总有办法让事情复杂化 :)

标签: javascript jquery object for-loop each


【解决方案1】:

在您进行编辑后,我注意到一些事情,您正在尝试创建一个带有没有名称的属性的 javascript 对象,这不是格式。在 JSON(javascript 对象表示法)中,每个属性都必须有一个值,您尝试存储的内容更适合数组。

相反,将其压入数组

    $.each(data, function(k, v){
    obj[v.test_id].area.push(v.area);
});

只要记住首先创建 obj[v.test_id] 并将其 area 属性设置为 []。 这导致:

1: {
    area: ["high","saw"]
}
3: {
    area: ["look"]
}

另外,如果您愿意考虑使用下划线,它有非常强大(但基本)的收集方法,您可能想看看http://underscorejs.org/#groupBy

【讨论】:

  • 我已编辑。我的意思是那些也是对象......但我想我总是可以将你的数组转换回对象
  • Javascript 对象是键值对,在 {1: {{area: "high"},{area: "high"}}} 这样的代码中没有多大意义,但是,数组更重要感觉,您可以使用 {1: [{area: "high"},{area: "high"}}],这将是一个具有名为“1”的属性的对象,其中包含对象数组,每个对象都有一个 area 属性
猜你喜欢
  • 1970-01-01
  • 2020-09-28
  • 2020-03-29
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多