在這里轉動我的輪子。概念上看起來很簡單,但 JS 正試圖殺死我。
兩個物件陣列:
let allProfileUsers = [
{
id: "0b4cd920-31da-11ec-a31c-cd844bfb73be",
auth_user_id: "fea98060-31ac-11ec-81f6-9b65b19a8154",
active: true
},
{
id: "0b4f9840-31da-11ec-a31c-cd844bfb73be",
auth_user_id: "fea73670-31ac-11ec-81f6-9b65b19a8154",
active: true
},
{
id: "0b51e230-31da-11ec-a31c-cd844bfb73be",
auth_user_id: "fea98060-31ac-11ec-81f6-9b65b19a8154",
active: true
}
];
let allAuthUsers = [
{
id: "fea4c570-31ac-11ec-81f6-9b65b19a8154",
username: "user1",
active: true,
},
{
id: "fea73670-31ac-11ec-81f6-9b65b19a8154",
username: "user2",
active: true,
},
{
id: "fea98060-31ac-11ec-81f6-9b65b19a8154",
username: "user3",
active: true,
}
];
我需要將第一個陣列中物件中的“id”欄位與第二組陣列中的“auth_user_id”欄位進行比較。基本上,基于這兩個欄位的匹配,陣列一中的所有用戶都應該存在于陣列二中。
這不起作用(不是速記,所以很容易除錯):
let allMatched = allAuthUsers.every(x => {
return allProfileUsers.some(pu => {
return x.id === pu.auth_user_id;
});
});
...回傳假;
當然,我可以手動遍歷每個值并進行比較。除非別無他法,否則我不想要。
我不得不認為 JS 能夠提供更優雅的帶箭頭的單線。事實上,令人沮喪的是,我知道我以前做過這件事,但我今天似乎無法做到。
uj5u.com熱心網友回復:
伙計,我覺得答案就在你的問題中。您需要先遍歷第一個陣列(allProfileUsers),然后檢查它是否存在于第二個(allAuthUsers)中。
let allMatched = allProfileUsers.every(pu => {
return allAuthUsers.some(x => {
return x.id === pu.auth_user_id;
});
});
uj5u.com熱心網友回復:
嘗試一些類似下面的事情。處理一個陣列值Set并使用另一個陣列every方法。
let allProfileUsers = [
{
id: "0b4cd920-31da-11ec-a31c-cd844bfb73be",
auth_user_id: "fea98060-31ac-11ec-81f6-9b65b19a8154",
active: true,
},
{
id: "0b4f9840-31da-11ec-a31c-cd844bfb73be",
auth_user_id: "fea73670-31ac-11ec-81f6-9b65b19a8154",
active: true,
},
{
id: "0b51e230-31da-11ec-a31c-cd844bfb73be",
auth_user_id: "fea98060-31ac-11ec-81f6-9b65b19a8154",
active: true,
},
];
let allAuthUsers = [
{
id: "fea4c570-31ac-11ec-81f6-9b65b19a8154",
username: "user1",
active: true,
},
{
id: "fea73670-31ac-11ec-81f6-9b65b19a8154",
username: "user2",
active: true,
},
{
id: "fea98060-31ac-11ec-81f6-9b65b19a8154",
username: "user3",
active: true,
},
];
const auth = new Set(allAuthUsers.map(({ id }) => id));
const isExist = allProfileUsers.every(({ auth_user_id }) =>
auth.has(auth_user_id)
);
console.log(isExist)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328705.html
標籤:javascript 节点.js 数组 目的 ecmascript-6
上一篇:迭代物件時鍵入鍵
