第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有效地檢查對象數(shù)組循環(huán)中的許多條件

有效地檢查對象數(shù)組循環(huán)中的許多條件

qq_笑_17 2023-05-19 15:13:54
我有一個對象數(shù)組,一個屬性是它們的狀態(tài),我需要計算以下狀態(tài):如果所有狀態(tài)都失敗,則返回“失敗”,如果所有狀態(tài)都被取消,則返回“已取消”,依此類推,但如果數(shù)組有一個失敗,或者一個取消返回“部分完成”,我做到了,但我循環(huán)了很多,我覺得存在一種更好更有效的方法來做同樣的事情,這是我的代碼:function getComputedStatus(list) {      if (list.every(status => status.statusName == 'Failed'))          return 'Failed';      if (list.every(status => status.statusName == 'Canceled'))          return 'Canceled';      if (list.every(status => status.statusName == 'DidNotRun'))          return 'DidNotRun';      if (list.some(status => status.statusName == 'InProgress' ||          status.statusName == 'Pending'))          return 'InProgress';      if (list.some(status => status.statusName === 'Failed'   ||                              status.statusName === 'Canceled' ||                              status.statusName === 'DidNotRun'))         return 'PartiallyCompleted';      return 'Completed';}
查看完整描述

1 回答

?
陪伴而非守候

TA貢獻1757條經(jīng)驗 獲得超8個贊

所以,看起來你的邏輯實際上是這樣的:

  1. 您有一組狀態(tài)對象。

  2. 如果任何狀態(tài)為“InProgress”或“Pending”,則返回“InProgress”

  3. 如果所有狀態(tài)都相同且為“失敗”、“取消”或“DidNotRun”,則返回該值。

  4. 如果任何狀態(tài)為“失敗”、“取消”或“DidNotRun”,則返回“部分完成”

  5. 否則,返回“完成”

因此,如果您能弄清楚如何通過一次遍歷數(shù)組而不是 5 次部分遍歷數(shù)組來完成所有這些檢查,將會獲得巨大的執(zhí)行效率。

這是一種方法:

const doneStatuses = new Set(["Failed", "Canceled", "DidNotRun", "Completed", "InProgress"]);


function getComputedStatus(list) {

    const allStatuses = new Set();


    // collect all status values in a Set object

    for (let status of list) {

        allStatuses.add(status.statusName);

    }


    // if all the statusName values were the same and they were  

    // "Failed", "Canceled", "DidNotRun", "InProgess" or "Completed"

    // then return that specific status

    if (allStatuses.size === 1) {

        let theStatus = Array.from(allStatuses)[0];

        if (doneStatuses.has(theStatus)) {

            return theStatus;

        }

    }

    // if any status was "InProgress" or "Pending", return "InProgress"

    if (allStatuses.has("InProgress") || allStatuses.has("Pending")) {

        return "InProgress";

    }


    // If any status was "Failed", "Canceled" or "DidNotRun" (but not all)

    // then return "PartiallyCompleted"

    if (allStatuses.has("Failed") || allStatuses.has("Canceled") || allStatuses.has("DidNotRun")) {

        return "PartiallyCompleted";

    }


    // otherwise, return "Completed"

    return "Completed";

}


查看完整回答
反對 回復(fù) 2023-05-19
  • 1 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號