我有一個物件陣列,每個物件都有自己的物件子陣列。
我試圖過濾每個子陣列并洗掉任何與條件不匹配的元素,expired === false但我不斷收到一個錯誤訊息:Property 'expired' does not exist on type '{ name: string; expired: boolean; }[]'.ts(2339)空陣列,我不確定我做錯了什么。
代碼沙盒
我的功能是這樣的:
result.filter(files => files.files.expired === false)
這是父物件結構的樣子:
const result =
[
{
type: "Documents",
files: [
{
name: "file_1",
expired: true
},
{
name: "file_2",
expired: false
},
{
name: "file_3",
expired: false
},
{
name: "file_4",
expired: true
},
{
name: "file_5",
expired: false
}
]
},
{
type: "Images",
files: [
{
name: "file_1",
expired: true
},
{
name: "file_2",
expired: false
}
]
}
]
uj5u.com熱心網友回復:
您正在過濾result陣列,而不是子陣列。
這將過濾files陣列中的result陣列
const result = [{
type: "Documents",
files: [{
name: "file_1",
expired: true
},
{
name: "file_2",
expired: false
},
{
name: "file_3",
expired: false
},
{
name: "file_4",
expired: true
},
{
name: "file_5",
expired: false
}
]
},
{
type: "Images",
files: [{
name: "file_1",
expired: true
},
{
name: "file_2",
expired: false
}
]
}
];
result.forEach(el => el.files = el.files.filter(file => file.expired === false));
console.log(result)
這將創建一個新物件的新陣列:
const result = [{
type: "Documents",
files: [{
name: "file_1",
expired: true
},
{
name: "file_2",
expired: false
},
{
name: "file_3",
expired: false
},
{
name: "file_4",
expired: true
},
{
name: "file_5",
expired: false
}
]
},
{
type: "Images",
files: [{
name: "file_1",
expired: true
},
{
name: "file_2",
expired: false
}
]
}
];
new_result = result.map(el => ({ ...el,
files: el.files.filter(file => file.expired === false)
}))
console.log(new_result)
uj5u.com熱心網友回復:
你有 files.files 作為 array ,所以你必須首先回圈它然后做過濾,比如
result.map((files) => files.files.filter(file=> file.expired === false));
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383215.html
標籤:javascript 数组
下一篇:如何在類陣列中填充類中的變數?
