簡體   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