用戶可以通過作業空間的下拉選單選擇過濾他們的受眾:
用戶可以通過作業空間的下拉選單選擇過濾他們的受眾。
const selectedWorkspaces = [
{
name: 'workspace-foo',
uid: 'wk_12345'。
...
},
{
name: 'workspace-bar',
uid: 'wk_54321',
...
},
];
讓我們說這些^是被選中的作業空間。
然后,我有一個表格,可以渲染那些有一個作業空間陣列的觀眾,他們是其中的一部分:
我有一個表格,可以渲染那些有一個作業空間陣列的觀眾。
const audiences = [
{
uid: 'aud_1234',
作業空間: ['wk_12345', 'wk_47856', 'wk_23942']。
...
},
{
uid: 'aud_4321',
作業空間: ['wk_12345'/span>, 'wk_54321'/span>, 'wk_02394'/span>]。
...
},
{
uid。'aud_9876',
作業空間: ['wk_54321'/span>, 'wk_23894'/span>, 'wk_02384'/span>]。
...
},
]
我想過濾掉包含所選作業空間的受眾,但我很難準確理解如何做到這一點。我希望回傳一個受眾陣列以進行渲染,然后當過濾器被取消選擇時,將其全部渲染。
有什么想法可以將兩個字串陣列相互比較嗎?無可否認,回圈是我的弱點。
uj5u.com熱心網友回復:
你可以使用Array.prototype.some()和Set功能在受眾陣列中做一個線性搜索過濾器。
const selectedWorkspaceSet = new Set();
selectedWorkspaces.forEach( workspace => selectedWorkspaceSet. add(workspace.uid) )。
const filteredAudiences = audiences .filter( audiences => !audiences。 workspaces.some( workspace => selectedWorkspaceSet. has(workspace)) )。
uj5u.com熱心網友回復:
只要建立一個單獨的陣列,其中只包含作業區的ID,并通過some方法過濾受眾,以回傳你想要的受眾
var workspaceIdArray = selectedWorkspaces. map((workspace) => workspace.uid)
var filteredAudiences =filter((audience) =>/span> workspaceIdArray. some((id) => audience.workspaces.includes(id))
uj5u.com熱心網友回復:
你可能應該制作某種AudienceController,它使用.filter:
const selectedWorkspaces = [
{
name: 'workspace-foo',
uid: 'wk_12345'.
},
{
name: 'workspace-bar',
uid: 'wk_54321'。
}
];
const audiences = [
{
uid: 'aud_1234',
作業空間: ['wk_12345'/span>, 'wk_47856'/span>, 'wk_23942'/span>]
},
{
uid: 'aud_4321',
作業空間: ['wk_12345'/span>, 'wk_54321'/span>, 'wk_02394'/span>]
},
{
uid: 'aud_9876',
作業空間: ['wk_54321'/span>, 'wk_23894'/span>, 'wk_02384'/span>]
}
];
function AudienceController(audiencesArray) {
this.audiences = audiencesArray;
this.include = selectedWorkspacesArray=> {
let w;
return this.audiences。 filter(o=> {
w = o.workspaces;
for(let o of selectedWorkspacesArray){
if(w.includes(o.uid)){
return o。
}
}
});
}
this.exclude = selectedWorkspacesArray=>/span>{
let w;
return this.audiences。 filter(o=> {
w = o.workspaces;
for(let o of selectedWorkspacesArray){
if(!w.includes(o.uid)){
return o。
}
}
});
}
}
const ac = new AudienceController(audiences)。
console.log(ac.exclude(selectedWorkspaces));
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/322442.html
標籤:
下一篇:JavaScript-我如何在一個單行代碼中使用物件字面和括號符號,動態地將一個新的鍵值對分配給一個物件,傳播語法?
