首页 > 解决方案 > 无法正确循环数组条件失败-reactjs

问题描述

尝试使用 for loop 循环数组列表,但如果满足,则条件会失败。

如果有 2 个数组列表,则说 1 有数据,其他没有数据

它仅循环通过第一个数组,但不循环其他数组列表。

我只是检查值是否为空、未定义和 0。

如果数组列表没有值,我会弹出警报消息,但首先列出数据是否可用并且它退出循环但它没有检查其他值是否满足。

我能得到一些建议吗?请

这是我下面的代码

areWidgetsEmpty = (currentWidgetList) => {
  for (let i = 0; i < currentWidgetList.length; i++) {
    const widget = currentWidgetList[i];
    switch (widget.widgetType) {
    case WidgetTypes.venn: {
        const CurrentWidgetRigthValue = widget.rightTargetValue;
        const CurrentWidgetLeftValue = widget.leftTargetValue;
        const CurrentWidgetRightText = widget.rightTarget;
        const CurrentWidgetLeftText = widget.leftTarget;

        return !CurrentWidgetRigthValue || !CurrentWidgetLeftValue || !CurrentWidgetRightText || !CurrentWidgetLeftText;
      };
    default:
      return false;
    }
  }
}

当前小部件列表

0
:
{widgetId: "ee23235b-4034-4443-98fc-47b783610311", widgetName: "widget 0", widgetType: "venn", leftTarget: "PSHGMALE", rightTarget: "PSHGMALE", …}
1
:
{widgetId: "625927bf-bacb-447d-aeb5-517940293c12", widgetName: "Widget", widgetType: "venn", leftTarget: "", rightTarget: "", …}

标签: arraysreactjs

解决方案


你可以试试这个。目前尚不清楚“空”的确切含义,但您可以定义一个nonEmpty函数并使用它Array.every()来检查数组中的所有项目是否满足函数中定义的条件。

const nonEmpty = ({
  widgetType,
  rightTarget,
  leftTarget
}) => widgetType == 'venn' ? rightTarget && leftTarget : true

const areWidgetsEmpty = items => !items.every(nonEmpty)

const widgets = [{
  widgetType: "venn",
  leftTarget: "PSHGMALE",
  rightTarget: "PSHGMALE"
}, {
  widgetType: "other",
  leftTarget: "",
  rightTarget: ""
}]

console.log(areWidgetsEmpty(widgets))


推荐阅读