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