Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过JSON进行迭代_Javascript_Json_D3.js_Jinja2 - Fatal编程技术网

Javascript 通过JSON进行迭代

Javascript 通过JSON进行迭代,javascript,json,d3.js,jinja2,Javascript,Json,D3.js,Jinja2,我有以下几个问题: sales = { "February 20, 2014": { "services": 0, "total": 160, "repairs": 0 }, "February 18, 2014": { "services": 360, "total": 1109.95, "repairs": 410 } }; 现在,这个JSON包含了我想要绘制的数据。我已经实现了漂亮的d3.js图表,但是我在从该JSON获取数

我有以下几个问题:

sales = {
  "February 20, 2014": {
    "services": 0,
    "total": 160,
    "repairs": 0
  },
  "February 18, 2014": {
    "services": 360,
    "total": 1109.95,
    "repairs": 410
  }
};
现在,这个JSON包含了我想要绘制的数据。我已经实现了漂亮的d3.js图表,但是我在从该JSON获取数据到图表时遇到了问题。我需要以某种方式遍历JSON,并为服务构建三个数组,total,repairs,并让它们包含键值对,
{x:date,y:value}

所以,这个过程应该是这样的(伪代码):

基于上述示例json的服务结果如下:

total = [{x: "February 20, 2014", y: "160.0"}, {x: "February 18, 2014", y: "1109.95.0"}]
当我在网站上呈现此内容时,我需要用Javascript实现此功能。

尽管很简单(值的元组):

小提琴:

如果您需要您提到的确切结构,那么:

var services = [];
var total = [];
var repairs = [];

for(i in sales) {
    var obj = {x: "", y: ""};
    obj.x = i;

    obj.y = sales[i].services;
    services.push(obj);

    obj.y = sales[i].total;
    total.push(obj);

    obj.y = sales[i].repairs;
    repairs.push(obj);
}

除了Matus Dubrava的答案之外,您应该始终确保在这种for循环样式中使用
hasOwnProperty()
,以避免迭代从对象原型继承的成员

var services = [];
var total = [];
var repairs = [];

for(i in sales) {
    if (sales.hasOwnProperty(i))
        continue;
    services.push(sales[i].services);
    total.push(sales[i].total); 
    repairs.push(sales[i].repairs);
}

一些浏览器实际上会迭代继承的成员,比如
.length
.push

为什么要在javascript中使用标记python?我正在使用python生成dict并使用jinja呈现它。我理解它造成的混乱,将删除标签。对不起,没问题。我看到了你的最后一行,就在我用python编写解决方案的时候,你需要{x:“二月..”,y:160}还是只要{“二月..”,160}就足够了?如果是这样,那么看看我的解决方案。现在它甚至应该有提到的结构。
var services = [];
var total = [];
var repairs = [];

for(i in sales) {
    var obj = {x: "", y: ""};
    obj.x = i;

    obj.y = sales[i].services;
    services.push(obj);

    obj.y = sales[i].total;
    total.push(obj);

    obj.y = sales[i].repairs;
    repairs.push(obj);
}
var services = [];
var total = [];
var repairs = [];

for(i in sales) {
    if (sales.hasOwnProperty(i))
        continue;
    services.push(sales[i].services);
    total.push(sales[i].total); 
    repairs.push(sales[i].repairs);
}