[英]how to return boolean value based on condition check in array object javascript
[英]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.