簡體   English   中英

根據對象數組內的對象條件返回布爾值

[英]return boolean based on object condition inside array of objects

我覺得這是一個非常簡單的問題,但過去幾個小時我一直在努力解決這個問題..

    data[0].fieldArray.fieldGroup[4].hideExpression = (model: any, formState: any) => {
      for (const item of formState.mainModel.config.linkItems) {
        console.log(item);
        if (item.displaySubmenu) {
          return false;
        } else {
          return true;
        }
      }
    };

我的 formState 包含一個內部有多個對象的 Array,我需要確定每個對象(displaySubmenu)內部的值是否為 true 或 false 並返回 true 或 false 以觸發 hideExpression .. 到目前為止,我只能設法觸發所有頁面上的元素或第一個或最后一個..

我也嘗試使用 forEach, map 但我覺得我錯過了一些非常簡單的東西,只是無法理解

您可以為此使用 array.filter 方法:

data[0].fieldArray.fieldGroup[4].hideExpression = (model: any, formState: any) => {
  return formState.mainModel.config.linkItems.filter(linkItem => {
    return linkItem.displaySubmenu;
  }).length > 0;
};

filter 方法返回一個包含與條件匹配的項目的數組。 如果 linkItems 中的一項的 displaySubmenu 為 true,它將在 filter 方法的返回數組中返回。 因此,當我們獲得該數組的長度時,它將大於 0,這將導致真正的布爾值。

當 linkItems 沒有帶有 displaySubmenu 的項目時,返回過濾器將返回一個空數組,因為沒有任何項目與條件匹配,並且長度將為 0,這會導致布爾值錯誤。

有關過濾器方法的更多信息: https : //developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM