我正在REST從React Native應用程式連接一個api 。我有具有不同名稱的檔案名物件的 Json 回應,但所有物件都有相同的變數:檔案名、訊息和顯示。
物件的數量隨著對 API (REST) 的每個請求而變化,回應的物件名稱因請求而異。但是每個物件中的變數都和上面一樣。
我從這個回應中需要的資訊只是檔案名文本,但如果我得到物件串列,這樣我就可以從錯誤中讀取訊息,這是可以接受的。
該影像顯示了我的物件的外觀。
這是我的提取請求:
const getGists = async () => {
await axios
.get(`https://api.github.com/gists/public?per_page=30`)
.then((r) => {
let n;
for (n = 0; n < 30; n ) {
console.log(r.data[n].files.filename);
// console.log("____________________");
// console.log(r.data[n].owner.avatar_url);
// console.log("____________________");
// console.log(JSON.stringify(r.data[n].files));
}
})
.catch((e) => {
console.log("ERROR", e);
});
};
即使每次迭代中的物件名稱不同,如何從這些請求中獲取每個檔案名。感謝幫助
uj5u.com熱心網友回復:
使用 API 呼叫的結果和一些高階函式,這將正常作業:
const getGists = async () => {
await axios
.get(`https://api.github.com/gists/public?per_page=30`)
.then((response) => {
const myDesireResult = response.data.reduce((acc, item) => {
const files = Object.values(item.files);
if (files.length > 1) {
files.forEach((file) => acc.push(file.filename));
} else {
acc.push(files[0].filename);
}
return acc;
}, []);
console.log(myDesireResult);
})
.catch((e) => {
console.log("ERROR", e);
});
};
解釋:
在then塊中,可以得到 API 呼叫結果result.data
使用reduce函式,將開始遍歷資料。
由于檔案中的物件具有不同的名稱,因此我們可以Object.values()輕松獲取檔案。
一些檔案包含多個專案,而大多數檔案只有一個專案。所以通過檢查長度,file我們可以采取適當的行動。如果檔案有多個元素,通過另一個簡單的 lop,我們可以輕松地遍歷這個檔案陣列。
檢查代碼和框上的作業示例
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/343494.html
標籤:javascript 反应原生 接口
上一篇:處理同一路徑中的多個引數
