簡體   English   中英

如何使用 javascript 僅迭代 JSON 數組 object 中的特定鍵

[英]How to iterate over only specific keys from a JSON array object using javascript

I am having a below json array and now I need to iterate over the json object to retrieve two values of fields ServicePort And ServiceAddress and form a final output as {"MyIp": "http://IP:Port"} from my json陣列 object。

var bodyObject = [
    {
        "ServiceAddress": "10.X.X.125",
        "ServiceConnect": {},
        "ServicePort": 80
    },
    
    {
       
        "ServiceAddress": "10.X.X.126",
        "ServiceConnect": {},
        "ServicePort": 80
    }
];

我已經嘗試如下迭代

for (var key in bodyObject ) {
       if (bodyObject.hasOwnProperty(key)) {
          console.log(bodyObject[key].ServiceAddress);
          console.log(bodyObject[key].ServicePort);
       }
       }

How can I form a output final output like {"MyIp": "http://IP:Port"} from my json array object each hitting giving me a diffrent Ip's from my above JSON list dynamically. 有人可以幫忙嗎

您是在問如何使用單個 object 和MyIp屬性創建一個新數組,該屬性的值是ServiceAddressServicePort的組合。 map是這樣做的慣用方式,也許需要進行一些解構以從每個 object 中挑選出屬性,並使用模板文字來構建結果字符串:

const result = bodyObject.map(({ServiceAddress, ServicePort}) => {
    return {MyIp: `http://${ServiceAddress}:${ServicePort}`};
});

或使用簡潔的箭頭 function:

const result = bodyObject.map(({ServiceAddress, ServicePort}) =>
    ({MyIp: `http://${ServiceAddress}:${ServicePort}`})
);

(您需要()在 object 文字周圍,否則它看起來像解析器的箭頭 function 的完整 function 主體形式。)

現場示例:

 const bodyObject = [ { "ServiceAddress": "10.XX125", "ServiceConnect": {}, "ServicePort": 80 }, { "ServiceAddress": "10.XX126", "ServiceConnect": {}, "ServicePort": 80 } ]; const result = bodyObject.map(({ServiceAddress, ServicePort}) => ({MyIp: `http://${ServiceAddress}:${ServicePort}`}) ); console.log(result);

其中有相當數量的新 JavaScript 功能,所以為了清楚起見,這里有一個沒有解構或模板文字的版本:

const result = bodyObject.map(element => {
    return {MyIp: "http://" + element.ServiceAddress + ":" + element.ServicePort};
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM