簡體   English   中英

如何在ES6中將對象映射到Array?

[英]How to map object to Array in ES6?

我有一個名為“ urls”的對象數組,其中包含每個具有“ name”和“ url”屬性的對象。 我想將每個對象映射到一個數組。 我該如何實現?

let urls = [{
        "name": "regions",
        "url": context + "ip/region/getAllRegions.do?query="
    },
    {
        "name": "sub regions",
        "url": "context + 'ip/region/getAllSubRegions.do"
    },
];
this.axiosData = urls.map(t => {
    axios.get(t.url)
        .then(res => {

            if (res.data.responseCode == 1) {
                return res.data.payload;
            } else {

                toastr.error("error retrieving " + t.name, "Failure");
            }
        })
        .catch(err => {
            console.log(err);
        });
});

這里的res.data.payload將是一個對象數組,axiosData在Vue實例的屬性內部的數據中定義。 我希望'axiosData'是一個數組,它是對象數組的數組。

axiosData可能是這樣的:

[[{
"id": 8,
"name_en": "Rangpur",
}, {
"id": 9,
"name_en": "Sylhet",
}, {
"id": 10,
"name_en": "Mymensingh",
}],


[{
"another_id": 8,

}, {
"another_id": 9,

}, {
"another_id": 10,

}]]

您應該使用Promise.all函數來發出多個請求。

 let urls = [{ "name": "regions", "url": context + "ip/region/getAllRegions.do?query=" }, { "name": "sub regions", "url": "context + 'ip/region/getAllSubRegions.do" }, ]; this.axiosDataPromises = urls.map(t => { return axios.get(t.url) .then(res => { if (res.data.responseCode == 1) { return res.data.payload; } else { toastr.error("error retrieving " + t.name, "Failure"); } }) .catch(err => { console.log(err); }); }); Promise.all(this.axiosDataPromises).then(resultArr => { this.axiosData = resultArr; }) 

暫無
暫無

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

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