我正在嘗試使用將一個物件陣列轉換為一個嵌套物件結構,Javascript但結果未按預期出現。我在下面解釋我的代碼。
let data = [
{
"hop_no": 1,
"jumphost_id": "jumphost1"
},
{
"hop_no": 2,
"jumphost_id": "jumphost2"
},
{
"hop_no": 3,
"jumphost_id": "another-jumphost"
},
{
"hop_no": 4,
"jumphost_id": "last-jumphost"
}
]
let result ='';
for(let i = 0; i< data.length; i ) {
const index = i 1;
const obj = data.find(o => o.name === index);
if(result === '' && !result['host-id']) {
result = {
"host-id": obj.jumphost_id,
"next-hop":{}
}
}else{
if(result['next-hop'] === '') {
result['next-hop'] = obj.jumphost_id
}
}
}
這里給出了物件陣列,下面給出了i.e- data我的預期結構。
預期結果如下。
{
"host-id": "jumphost1",
"next-hop": {
"host-id": "jumphost2",
"next-hop": {
"host-id": "another-jumphost",
"next-hop": {
"host-id": "last-jumphost",
}
}
}
}
這里的條件是"hop_no": 1各個jumphost_id值將分配給host-id并將成為第一個鍵的時間。之后,嵌套物件結構將按值的升序形成,hop_no并將相應的jumphost_id值分配給next-hop鍵。任何人都可以幫助我僅使用 Javascript 設計此結構。
uj5u.com熱心網友回復:
你可以用一個reduce函式來做到這一點:
let data = [{
"hop_no": 1,
"jumphost_id": "jumphost1",
ip: "",
port: 22,
user: "",
password: "",
"device-type": "linux"
},
{
"hop_no": 2,
"jumphost_id": "jumphost2",
ip: "",
port: 22,
user: "",
password: "",
"device-type": "linux"
},
{
"hop_no": 3,
"jumphost_id": "another-jumphost",
ip: "",
port: 22,
user: "",
password: "",
"device-type": "linux"
},
{
"hop_no": 4,
"jumphost_id": "last-jumphost",
ip: "",
port: 22,
user: "",
password: "",
"device-type": "linux"
}
]
let result = data.sort((a, b) => b.hop_no - a.hop_no).reduce((prev, curr, i, array) => {
let { hop_no, jumphost_id, ...rest } = curr
return {
'host-id': jumphost_id,
...rest,
...(i > 0 ? {'next-hop': { ...prev }} : {}),
}
}, {})
console.log(result)
uj5u.com熱心網友回復:
您可以嘗試從內到外構建物件。
像這樣:
let data = [
{
"hop_no": 1,
"jumphost_id": "jumphost1"
},
{
"hop_no": 2,
"jumphost_id": "jumphost2"
},
{
"hop_no": 3,
"jumphost_id": "another-jumphost"
},
{
"hop_no": 4,
"jumphost_id": "last-jumphost"
}
]
let result = {};
for (var i = data.length - 1; i >= 0; i--) {
let tmp = {
'host-id': data[i]['jumphost_id'],
};
if (Object.keys(result).length !== 0) {
tmp['next-hop'] = result;
}
result = tmp;
}
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/463611.html
標籤:javascript 目的
