繁体   English   中英

交叉比较两个数组

[英]Cross comparing two arrays

我试图找出如何实现目标。 我有一个对象,如果执行以下操作

let str = JSON.stringify(this.data, null, 4);
console.log(str);

我收到的输出是这样的(我删除了很多元素,每个元素只显示一个。

{
    "links": [
        {
            "id": 12,
            "source": "0",
            "target": "5",
            "value": "123",
        }
    ],
    "nodes": [
        {
            "id": 93,
            "node": "0",
            "name": "pizza",
        }
    ]
}

我正在尝试将这些数据推送到数组上

Object.entries(this.data.links).forEach(([key, val]) => {
    this.newArray.push([val.source, val.target, parseInt(val.value)]);
});

现在显然这只是将链接推送到我的阵列上,这正是我所需要的。 这是在做如下的事情

0: (3) ["0", "5", 123, __ob__: Observer]

现在,尽管这是我需要的结构,但它不是0和5,而是需要它使用与正确节点匹配的name元素。 所以上面应该是

0: (3) ["pizza", "pie", 123, __ob__: Observer]

由于节点数组中的节点0是披萨饼,节点5是饼图(尽管上面没有显示)。

那么如何从节点中的节点交叉检查源和目标,然后使用名称作为值?

谢谢

您可以轻松地将nodes数组转换为通过为它提供索引来返回name

nodes = [];
data.nodes.forEach(node=>nodes[node.node] = node.name);

然后在你的forEach

// this might give you undefined at some places, so make sure you have all the values, or put in some necessory checks.
Object.entries(this.data.links).forEach(([key, val]) => {
    this.newArray.push([nodes[val.source], nodes[val.target], parseInt(val.value)]);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM