我向端點發出了一個請求,我得到了這個物件,我正在過濾這樣的名稱:
fetch('http://endpoint', requestOptions)
.then((response) => response.json())
.then((result) => {
const onlineUsers = result.resource.items[1].onlineUsers >= 1;
console.log(onlineUsers);
})
.catch((error) => console.log('error', error));
這個工人,但我只需要鍵名中的結果Forms,但有可能它會改變它的位置,所以items[1]它可能不再作業了
這是我收到的物件的一個??示例:
{
"type": "application/vn json",
"resource": {
"total": 4,
"itemType": "application",
"items": [
{
"name": "Test",
"onlineUsers": 1
},
{
"name": "Forms",
"onlineUsers": 1
},
{
"name": "Users",
"onlineUsers": 7
},
{
"name": "OnlineUsers",
"onlineUsers": 5
}
]
},
"method": "get",
"status": "success"
}
有沒有辦法接收這個物件并按名稱過濾?喜歡:
if (hasName === "Forms", get onlineUsers) {
// Do something
}
謝謝!
uj5u.com熱心網友回復:
正如您的問題所建議的,您可以在陣列上使用過濾器。像這樣的東西:
console.log(
result.resource.items.filter((item) => item.name === "Forms")
);
這將列印一個包含所有名稱為 的專案的陣列Forms。使用您的示例:
[
{
"name": "Forms",
"onlineUsers": 1
}
]
如果只有一個帶有 name 的專案Forms,或者如果您只想要第一個專案,則find可能是一個很好的替代方案,其語法類似:
console.log(
result.resource.items.find((item) => item.name === "Forms")
);
這將只列印第一個找到的物件(如果沒有匹配,則為 null),沒有陣列“污染”:
{
"name": "Forms",
"onlineUsers": 1
}
uj5u.com熱心網友回復:
result.resource.items.filter((item) => item.name === "Forms")
將為您過濾您的物件注意,您將回傳滿足條件的所有過濾物件的陣列。
uj5u.com熱心網友回復:
如果您知道只有一個與該名稱匹配的物件,您可以使用find它將回傳第一個匹配項,因此您不必遍歷整個陣列。
這是一個可能有幫助的通用功能。傳入資料、 的值name以及您想要其值的屬性。如果沒有匹配,則回傳“無資料”。
const data={type:"application/vn json",resource:{total:4,itemType:"application",items:[{name:"Test",onlineUsers:1},{name:"Forms",onlineUsers:1},{name:"Users",onlineUsers:7},{name:"OnlineUsers",onlineUsers:5}]},method:"get",status:"success"};
function finder(data, name, prop) {
return data.resource.items.find(item => {
return item.name === name;
})?.[prop] || 'No data';
}
console.log(finder(data, 'Forms', 'onlineUsers'));
console.log(finder(data, 'morf', 'onlineUsers'));
console.log(finder(data, 'Users', 'onlineUsers'));
console.log(finder(data, 'Users', 'onlineUser'));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/523680.html
下一篇:撰寫此代碼的正確方法是什么?
