开发者问题收集

如何检查对象数组是否有值或未定义-Reactjs,数组

2018-06-07
3161

我只是想循环循环遍历对象的数组,如果值是空的且未定义的,则应弹出警报消息

是否有任何简单的方法来查找数组的对象具有值或未定义的

尝试搜索如果有任何可用帖子,请在此处发布

可以在此帮助我

这是下面的屏幕截图

在这里,我只显示我需要循环遍历的对象,并检查Undefined

”在此处输入图像说明“

编辑

376833663

}

2个回答

如果您想知道是否至少有 1 个值:

  • undefined null ( == null )
  • empty ( === "" )

您应该对对象的值使用 findIndex

if ( -1 !== Object.values(widget).findIndex( v => v == null || v === "") )
    alert("missing value found!");

请注意, find 并不合适,因为当它返回 undefined 时,您不知道它意味着什么。


[使用您的代码进行编辑]

您误用了 mapmap 是当您想要返回相同长度的数组并处理其转换后的元素时使用的。在这里,您的函数什么也不返回。

如果您想要返回一个包含较少元素的数组(例如匹配一个 id),请使用 filter

如果您想要返回其他任何内容(例如所有元素的总和),请使用 reduce

如果您不想返回任何内容(void)并且只循环遍历数组,请使用 forEach

如果您想检查某个元素是否具有属性,请使用 findfindIndex

据我所知,您的函数可能是:

handleGobackToBoards = () => {
    const boardList = this.props.storyboardList.boardList,
          boardId = this.props.selectedBoard.boardId;
    boardList
        .filter( (data) => data.boardId === boardId ) // Get all board with matching id
        .forEach( (data) => {
            data.widgetList
                .filter( (widget) => widget.widgetId ) // Get all widgets that have an id
                .forEach( (widget) => {
                    if ( -1 !== Object.values(widget).findIndex( v => v == null || v === "") ) {
                        alert('Empty Data');
                    }
                    else {
                        this.props.manageShowBoard({});
                    }
                });
        });
}

[EDIT2] 与您的代码不等同的东西,但我猜更接近您想要做的事情:

handleGobackToBoards = () => {
    const boardList = this.props.storyboardList.boardList,
          boardId = this.props.selectedBoard.boardId,
          board = boardList.find( (data) => data.boardId === boardId ); // Get board with matching id
    if (!board)
        return; // No matching board
    const emptyWidget = board.widgetList.find( (widget) => -1 !== Object.values(widget).findIndex( v => v == null || v === "") );
    if (emptyWidget)
        alert('Empty Data');
    // All widgets have no empty property, show board
    this.props.manageShowBoard({});
}
RaphaMex
2018-06-07

循环小部件数组并循环遍历每个小部件的值以检查每个值:

widgetlist.forEach(widget => {
  Object.values(widget).forEach(value => {
    if (value === undefined || value === null || value === "") {
      console.log('Value ', value, ' of widget', widget, ' is empty'); // if you prefer do an alert 
    }
  });
});
Rodius
2018-06-07