1

我正在从第三方站点提取数据的站点上工作。我的 PHP 提取数据并用一个非常好的 JSON 对象进行响应。然后,我使用 $.each 来遍历对象并对效果很好的数据进行排序。问题是我不知道如何提取主要属性。

示例 JSON 响应:

{
    "1234": {
        "all_sales": {"11/12/2012":"1211.33","11/13/2012":"2012.45"},
        "sales_total":"323.78",
        "store_number":"1234",
    },
     "5678": {
        "all_sales": {"11/12/2012":"1211.33","11/13/2012":"2012.45"},
        "sales_total":"323.78",
        "store_number":"5678",
    },

}

1234 和 5678 是商店编号。我想要的是不需要 store_number 属性,只知道它是什么。在 PHP 中会是这样的:

for ($data as $store_number => $store_data){
    //do whatever
}

我这样做是出于各种原因,但主要是因为我可以简单地调用 data.1234 或为前 10 名建立一个销售数组。现在 store_number 属性允许我这样做,但不需要它的额外数据。

4

4 回答 4

3

我想你想使用$.each回调函数的第一个参数:

var a = { "1234": { ... }, "5678": { ... } };

$.each(a, function(main, val) {
    console.log(main); // prints "1234" and "5678"
});
于 2012-12-07T06:09:55.577 回答
1

for x in 循环是这里工作的正确工具。我喜欢 jQuery,但当 JavaScript 覆盖它时,不要甩掉 JQ-hammer。

var myObj = {
    "1234": {
        "all_sales": {"11/12/2012":"1211.33","11/13/2012":"2012.45"},
        "sales_total":"323.78",
        "store_number":"1234",
    },
     "5678": {
        "all_sales": {"11/12/2012":"1211.33","11/13/2012":"2012.45"},
        "sales_total":"323.78",
        "store_number":"5678",
    },

}

for (var x in myObj) {
    alert('property:' + x);
    alert('property.sales_total:' + myObj[x].sales_total); 
}
于 2012-12-07T06:14:17.200 回答
1

如果我理解正确,您需要一个值为“1234”、“5678”等的数组:

myArray=$.map(myJSON,function(value,key){return key;});

[编辑]再想一想,这可能更接近你所追求的:

myArray=$.map(myJSON,function(value,key){
// do whatever
});

正如@Ian 在评论中所说,您可能希望将所有处理分组在一个循环中(如我的示例中的 $.each 或 $.map )。

于 2012-12-07T06:20:09.733 回答
0
for (var key in object) {
    console.log(key);
}
于 2012-12-07T06:14:15.280 回答