我只是试图遍历对象数组,如果值为空且未定义且为null,则应弹出警告消息
有没有简单的方法可以找到数组的对象有值或未定义
试图搜索是否有任何帖子请在这里发帖
任何人都可以帮助我吗
这是下面的截图
这里我只显示我需要循环的对象并检查是否未定义
被修改
handleGobackToBoards =() =>{
const compareWidgetData = this.props.storyboardList.boardList.map((data, key) => {
if (data.boardId === this.props.selectedBoard.boardId ) {
data.widgetList.map((widget => {
if (widget.widgetId) {
Object.values(widget).map(value => {
if (value === undefined || value === null || value === "" || value === 0) {
alert('Empty Data');
}
else {
this.props.manageShowBoard({});
}
// });
}
}));
}
});
}
答案 0 :(得分:2)
如果您想知道是否至少有1个值:
== null
)=== ""
)您应该在对象的值上使用findIndex
。
if ( -1 !== Object.values(widget).findIndex( v => v == null || v === "") )
alert("missing value found!");
请注意,find
不合适,因为您不知道返回 undefined 时的含义。
[使用您的代码编辑]
您滥用map
。 map
是您想要返回相同长度的数组并处理其转换元素的时间。这里你的函数什么都不返回。
如果要返回包含较少元素的数组(例如匹配id),请使用filter
。
如果您想要返回任何其他内容(例如所有元素的总和),请使用reduce
。
如果您不想返回任何内容(void)并只是循环遍历数组,请使用forEach
。
如果您想检查某个元素是否包含属性,请使用find
或findIndex
。
据我了解,您的功能可能是:
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({});
}
答案 1 :(得分:1)
循环访问小部件数组并遍历每个小部件值以检查每个值:
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
}
});
});