javascript - JS将数组转换为json链表?

标签 javascript jquery json

我是 JS 的新手,组织数据的概念让我有些困惑,我试图从特定的数组格式中获取数据(因为这是我必须使用的格式)并将其输出为另一种特定的 JSON 格式。

这是给D3 sankey模块传递数据 https://github.com/d3/d3-plugins/blob/master/sankey/sankey.js

我不知道如何将节点的索引添加到链接中,而不是名称。

真的,我完全迷失了它! 我在这里做了一个 fiddle : https://jsfiddle.net/adamdavi3s/kw3jtzx4/

下面是所需数据和输出的示例

var data= [
    {"source":"Agricultural 'waste'","target":"Bio-conversion","value":"124.2729"},
    {"source":"Bio-conversion","target":"Electricity grid","value":"0.597"},
    {"source":"Bio-conversion","target":"Losses","value":"26.862"},
    {"source":"Bio-conversion","target":"Liquid","value":"280.322"},
    {"source":"Losses","target":"Liquid","value":"280.322"}
];


 var output= { 
     "nodes":[
         {"name":"Agricultural 'waste'"},
         {"name":"Bio-conversion"},
         {"name":"Electricity grid"},
         {"name":"Losses"},
         {"name":"Liquid"}
     ],
     "links":[
         {"source":0,"target":1,"value":124.729},
         {"source":1,"target":2,"value":0.597},
         {"source":1,"target":3,"value":26.862},
         {"source":1,"target":4,"value":280.322},
         {"source":3,"target":4,"value":280.322}
     ]
 };

这是我目前为止的 fiddle 代码

var data=[{"source":"Agricultural 'waste'","target":"Bio-conversion","value":"124.2729"},
{"source":"Bio-conversion","target":"Electricity grid","value":"0.597"},
{"source":"Bio-conversion","target":"Losses","value":"26.862"},
{"source":"Bio-conversion","target":"Liquid","value":"280.322"},
{"source":"Losses","target":"Liquid","value":"280.322"}
];

var sourceArray=[];

for (var i=0; i <data.length; i++ )     {
var node= {"name":data[i].source};
var found = jQuery.inArray(node, sourceArray);
if (found < 0) {
      // Element was not found, add it.
    sourceArray.push(node);
}

}
console.log(sourceArray);

最佳答案

在 JavaScript 中:

[ ] 注释用于描述数组,例如:

var names=["John","Lisa"]

{ } 它用来描述一个对象

var person = {"name" : "John", "age" : 23}

你可以在另一个里面使用它们

 var people=[{"name" : "John", "age" : 23},{"name" : "Lisa", "age" : 44}]

试试这个:

var data=[{"source":"Agricultural 'waste'","target":"Bio-conversion","value":"124.2729"},
{"source":"Bio-conversion","target":"Electricity grid","value":"0.597"},
{"source":"Bio-conversion","target":"Losses","value":"26.862"},
{"source":"Bio-conversion","target":"Liquid","value":"280.322"},
{"source":"Losses","target":"Liquid","value":"280.322"}
];

var sourceArray=[];
var linkArray=[];

for (var i=0; i <data.length; i++ )		{
var node= {"name":data[i].source,};
var link= {
"source":i,
"target":data[i].target,
"value":data[i].value,
};
var found = jQuery.inArray(node, sourceArray);
if (found >= 0) {
    // Element was found, remove it.
    sourceArray.splice(found, 1);
    linkArray.splice(found, 1);
} else {
    // Element was not found, add it.
    sourceArray.push(node);
    linkArray.push(link);
}

}
finalArray={"nodes": sourceArray,"links": linkArray}
console.log(finalArray);

https://jsfiddle.net/9x4rdyy7/

关于javascript - JS将数组转换为json链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39897552/

相关文章:

java - 使用 jackson 序列化数组

c# - 让 NodaTime.Serialization.JsonNet 使用自定义日期格式

javascript - 通过类别引入值(value)

javascript - 尝试获取 str 中每个字符的编号

javascript - 如何在鼠标移出时从当前帧恢复 css3 关键帧动画?

javascript - 使用 jQuery Datepicker 使日期在加载时不可选择

javascript - 如何检查一个div是否具有jquery中多个类中的一个类

php - 测试 100 多个域的最快方法

json - 如何在 jmeter 中使用 json 响应 token

c# - 如何在第一次点击后禁用按钮