我想創建一個條件,僅當陣列中的所有元素都處于狀態 3 時才執行該函式,如果陣列具有狀態 3 或不同于 3 的元素,我不應該執行該函式。
我試過這段代碼,但當我有狀態 3 或不同狀態的元素時不起作用。
goToPeople(): void {
const selectedItems = this.ms.selectedItems;
selectedItems.forEach(item => {
if (item.status !== 3){
console.log('nonnnnnn');
}else{
console.log('yesss');
//my function
}
});
}
這是 JSON:
[
{
"date": "2021-10-14T16:48:05 00:00",
"status": 3,
"name": "HRDD",
"id": "ab8d4bd7"
},
{
"date": "2021-10-14T16:55:05 00:00",
"status": 2,
"name": "ddfgdfgd",
"id": "adfgdfgdf45"
}
]
uj5u.com熱心網友回復:
我不知道這是否是最好的方法,但這就是我通常處理這種情況的方式(原諒語法錯誤,我只寫了 JS 而不是 TS):
let execute = true;
selectedItems.foreach(item => {
if(item.status !== 3){
execute = false;
}
});
if(execute) console.log('yes');
else console.log('nonnnnnn');
基本上只要保持一個布林值,如果任何元素不滿足您的條件,它就會關閉。
uj5u.com熱心網友回復:
減少應該得到你想要的......
const execute = selectedItems.reduce((acc, item) => {
if (acc === false) return;
return item.status === 3;
}, true);
這將遍歷陣列中的每個專案。如果它們都是 3,它將回傳 true。如果沒有,它將回傳 false。邊緣情況,如果陣列為空,則回傳true。所以你需要考慮到這一點。
uj5u.com熱心網友回復:
您可以創建這樣的功能:
statusValid(selectedItems): boolean {
var valid = true
selectedItems.forEach(item => {
if (item.status !== 3){
valid = false;
}
});
return valid;
}
進而:
goToPeople(): void {
const selectedItems = this.ms.selectedItems;
if(statusValid(selectedItems )){
// your function here
}
}
uj5u.com熱心網友回復:
你可以試試這個。
goToPeople(): void {
const selectedItemsFIlterd = this.ms.selectedItems.filter(selected => selected.status === 3);
selectedItemsFiltered.forEach(item => {
this.yourFunction();
});
}
我希望這對你有幫助,問候。
uj5u.com熱心網友回復:
陣列every函式用于此目的,true如果陣列中的每個元素都匹配條件,則回傳,否則回傳false,因此:
if (selectedItems.every(item => item.status === 3)) {
// execute
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330845.html
