我正在呼叫兩個 API 端點:第一個將回傳一組客戶端,其帳戶當前在我們這里是活動的,第二個將回傳一個所有客戶端(當前和過去)的陣列,而不管它們的當前狀態如何。
我正在創建一個下拉選單,它基本上會將一個客戶端添加到“活動客戶端”陣列中。要創建此下拉串列,我需要從“活動客戶端陣列”中已存在的“所有客戶端陣列”中過濾掉所有客戶端。
例如:
所有客戶
[{name: "Martha", id: 1}, {name: "John", id: 2},{name: "Jane", id: 3}, {name: "Mary", id: 4}]
活躍客戶
[{name: "John", customerid: 2}, {name: "Mary", customerid: 4}]
(是的,后端開發確實給了他們不同的屬性名稱)
我的新陣列顯然應該是:
[{name: "Martha", id: 1}, {name: "Jane", id: 3}]
我可以遍歷此串列以填充下拉選單,并且僅將客戶端提交到還沒有我們的活動帳戶的后端。
uj5u.com熱心網友回復:
如果您可以認為 id 是唯一的,那么您可以執行以下操作:
function removeDuplicates(allClients, activeClients) {
const activeClientIds = new Set(
activeClients.map((client) => client.customerid)
);
return allClients.filter((client) => !activeClientIds.has(client.id));
}
const allClientsArr = [
{ name: "Martha", id: 1 },
{ name: "John", id: 2 },
{ name: "Jane", id: 3 },
{ name: "Mary", id: 4 },
];
const activeClientsArr = [
{ name: "John", customerid: 2 },
{ name: "Mary", customerid: 4 },
];
const result = removeDuplicates(allClientsArr, activeClientsArr);
console.log(result);
uj5u.com熱心網友回復:
您可以使用簡單的.filter. 此外,您的示例結果實際上缺少一個元素。
const all = [{name: "Martha", id: 1}, {name: "John", id: 2},{name: "Jane", id: 3}, {name: "Mary", id: 4}]
const old = [{name: "John", customerid: 2}, {name: "Mary", customerid: 4}];
const oldIds = old.map(customer => customer.customerid);
console.log(all.filter(customer => !(customer.id in oldIds)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456419.html
標籤:javascript 数组
下一篇:C#中的可變長度字典陣列
