setup() {
var nodes = {
node1: { name: "Node 1" },
node2: { name: "Node 2" },
node3: { name: "Node 3" },
node4: { name: "Node 4" },
}
var edges = {
edge1: { source: "node1", target: "node2" },
edge2: { source: "node2", target: "node3" },
edge3: { source: "node3", target: "node4" },
}
return { nodes, edges }
}
因此,與其撰寫 node1、node2 等,有沒有一種方法可以回圈并創建完全相同的東西?任何建議表示贊賞。
uj5u.com熱心網友回復:
是的。您可以使用類似Object.fromEntries的東西動態創建屬性名稱。
Object.fromEntries從一系列條目創建一個物件,其中“條目”是一個包含兩個元素的陣列:屬性名稱和該屬性的值。
這是一個重新創建上述資料的示例:
function setup() {
const nodes = Object.fromEntries(
[1,2,3,4].map(n => ["node" n, { name: "Node " n }])
)
const edges = Object.fromEntries(
[1,2,3].map(n => [
"edge" n,
{ source: "node" n, target: "node" String(n 1) }
])
)
return { nodes, edges }
}
console.log(setup())
uj5u.com熱心網友回復:
這是一個解決方案:
const setup = (nodeCount) => {
const nodes = {};
const edges = {};
for (let i = 1; i <= nodeCount; i ) {
nodes[`node${i}`] = {
name: `Node ${i}`
}
if (i <= nodeCount - 1) {
edges[`edge${i}`] = {
source: `node${i}`,
target: `node${i 1}`
}
}
}
return { nodes, edges };
}
console.log(setup(4));
uj5u.com熱心網友回復:
你當然可以!方法很多,常見的一種是:
const nodes = Object.fromEntries(
Array.from(Array(10).keys())
.map(i => [`node${i 1}`, {name: `Node ${i 1}`}])
);
/* nodes are:
{
"node1": {
"name": "Node 1"
},
"node2": {
"name": "Node 2"
},
"node3": {
"name": "Node 3"
},
"node4": {
"name": "Node 4"
},
"node5": {
"name": "Node 5"
},
"node6": {
"name": "Node 6"
},
"node7": {
"name": "Node 7"
},
"node8": {
"name": "Node 8"
},
"node9": {
"name": "Node 9"
},
"node10": {
"name": "Node 10"
}
}
*/
uj5u.com熱心網友回復:
以下代碼具有相同的結果,但使用了 for 回圈,如果您需要其他內容,請在您的問題中更具體。
setup() {
var nNodes = 4
var nEdges = 3
var nodes = {}
var edges = {}
for(i = 1 ; i < nNodes 1; i ){
nodes['node' i.toString()] = {"name": "Node " i.toString()}
}
for(i = 1 ; i <nEdges 1; i ){
edges['edge' (i 1).toString()] = {"source": "node" i.toString(), "target": "node" (i 1).toString()}
}
return { nodes, edges }
}
uj5u.com熱心網友回復:
您可以使用 檢索物件鍵Object.keys。在你的情況下:
var nodes = {
node1: { name: "Node 1" },
node2: { name: "Node 2" },
node3: { name: "Node 3" },
node4: { name: "Node 4" }
};
// Retrieve ["node1", "node2", ...] from nodes
var nodeNames = Object.keys(nodes);
var pairs: string[][]= [];
// Create a pair of ["node#n", "node#n 1"]
nodeNames.forEach((nodeName, index) => {
if (index == nodeNames.length - 1) return;
pairs.push([nodeName, nodeNames[index 1]);
});
// Make edges from node pairs
var edges = pairs.map((pair) => {
return {source: pair[0], target: pair[1]};
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/479050.html
上一篇:在樸素貝葉斯中應用交叉驗證
