javascript - 用另一个对象的索引填充一个对象

标签 javascript arrays d3.js

我有两个对象。一个是单词数组,另一个给出第一个数组中两个单词之间的关系:

nodes = ["apple","cherry","pear","strawberry"]

data = [{word1 : "apple", word2 : "cherry" , weight : "0.1"},
        {word1 : "apple", word2 : "strawberry" , weight : "0.2"},
        {word1 : "cherry", word2 : "pear" , weight : "0.3"},
        {word1 : "cherry", word2 : "strawberry" , weight : "0.4"},
        {word1 : "strawberry", word2 : "pear" , weight : "0.5"}]

我想创建一个具有数据结构的新对象,而不是单词,而是它们的索引。就像这样:

links =  [{source : "0", target : "1" , value : "0.1"},
          {source : "0", target : "3" , value : "0.2"},
          {source : "1", target : "2" , value : "0.3"},
          {source : "1", target : "3" , value : "0.4"},
          {source : "3", target : "2" , value : "0.5"}]

到目前为止我有这个:

for (var i = 0 ; i < nodes.length; i++) {
     test[i] = nodes.findIndex(d => d == nodes[i]);
}

这给了我这个新数组,对应于节点中的索引:

test = [0,1,2,3]

那么我现在该如何将这些索引分配给links中的属性?

最佳答案

尝试:

var nodes = ["apple","cherry","pear","strawberry"];

var data = [{word1 : "apple", word2 : "cherry" , weight : "0.1"},
        {word1 : "apple", word2 : "strawberry" , weight : "0.2"},
        {word1 : "cherry", word2 : "pear" , weight : "0.3"},
        {word1 : "cherry", word2 : "strawberry" , weight : "0.4"},
        {word1 : "strawberry", word2 : "pear" , weight : "0.5"}];

var links = data.map((item) => {
    return {
        source: nodes.indexOf(item.word1),
        target: nodes.indexOf(item.word2),
        value: item.weight
        
    };
});

console.log(links);
console.log(data);

关于javascript - 用另一个对象的索引填充一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45459747/

相关文章:

javascript - 如何将 jquery 对象转换为字符串?

javascript - req.body 在 Express 应用程序的后路由中未定义

javascript - 为什么对象在 JavaScript 中不可迭代?

arrays - 在 ruby​​ 上使用每个乘法数组

javascript - D3JS 条形图工具提示,从垂直转换为水平

javascript - 如何使用父页面 css 为 iframed 页面内容提供样式?

javascript - 我可以在 JavaScript 中获取 CSS 图像规则吗?

c - 在 C 中重新分配涉及指针的字符串

javascript - d3 堆叠和缩放

d3.js - 计算 dc.js 条形图中的条数