0

我有一个对象样本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""
}

有任何想法吗?谢谢

4

1 回答 1

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

于 2013-01-13T07:50:03.073 回答