[英]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.