我有這個陣列:
defaultColumnsWithItems = [
{
column: 'Contrie', items: [
{ id: 1, label: 'USA', selectedItem: true },
{ id: 2, label: 'FRANCE', selectedItem: false },
{ id: 2, label: 'MAROC', selectedItem: false }
]
},
{
column: 'Categorie', items:
[
{ id: 0, label: 'Alimentaion', selectedItem: true },
{ id: 1, label: 'ricolage', selectedItem: false },
{ id: 2, label: 'Literie', selectedItem: true },
{ id: 3, label: 'Menage', selectedItem: false },
]
}
];
我只想過濾具有等于 true 的選定項的元素。我試試這個:
const columnsWithSelectedItems = colmunsWithItemsToFilter.filter((columnWithItems) => {
return columnWithItems.items.filter( item => item.selectedItem === true)
})
但它回傳所有元素。
謝謝你。
uj5u.com熱心網友回復:
您應該回傳帶有 items 陣列條件的整個物件,而不是過濾 defaultColumnsWithItems。
在這種情況下,我們使用 map 函式來回傳我們的物件,對于 items 陣列,我們使用 filter 函式來過濾每個 item 中的 selectedItem。
const defaultColumnsWithItems = [
{
column: 'Contrie', items: [
{ id: 1, label: 'USA', selectedItem: true },
{ id: 2, label: 'FRANCE', selectedItem: false },
{ id: 2, label: 'MAROC', selectedItem: false }
]
},
{
column: 'Categorie', items:
[
{ id: 0, label: 'Alimentaion', selectedItem: true },
{ id: 1, label: 'ricolage', selectedItem: false },
{ id: 2, label: 'Literie', selectedItem: true },
{ id: 3, label: 'Menage', selectedItem: false },
]
}
]
const items = defaultColumnsWithItems.map(el => {
return {
column: el.column,
items: el.items.filter(i => i.selectedItem)
}
})
console.log('items: ', items);
uj5u.com熱心網友回復:
嘗試這個
defaultColumnsWithItems.map(function(ComparisonResult) {
ComparisonResult.items = ComparisonResult.items.filter(x => x.selectedItem);
return ComparisonResult;
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/489929.html
標籤:javascript 有角度的 打字稿 罗达什
