gpt4 book ai didi

javascript - 如何使用 AngularJS 过滤器捕获 null、undefined、空白值

转载 作者:行者123 更新时间:2023-11-30 10:04:18 27 4
gpt4 key购买 nike

我正在尝试编写一个在网格中使用的过滤器,该过滤器将捕获所有 null、未定义、空白字符串或其他类似值并显示破折号“-”。到目前为止我已经写了以下内容,但它没有捕获空值,我想知道它是否可以更简洁并且可能重构以避免三层嵌套的 if/else 语句。需要检查百分比值是否大于 0 且小于 1。此外,负数和 0 应按原样返回。谢谢!

angular.module('AdverseEventsExplorer.main').filter('emptyCellFilter', function ($filter) {
return function (input, cellFilter, args1, args2) {

if (cellFilter == undefined) {
return (angular.isNumber(input) || angular.isDefined(input) && input.length > 0) ? input : '-';
} else {
if (cellFilter.match(/pctg|percent|pctgFilter|incidence/ig)) {
return (input > 0 && input < 1.0000000) ? $filter(cellFilter)(input, args1, args2) : '-';
} else {
return (angular.isNumber(input) || angular.isDefined(input) && input.length > 0) ? input : '-';
}
}

};
});

2.0 版考虑了@tymeJV 的评论:

angular.module('AdverseEventsExplorer.main').filter('emptyCellFilter', function ($filter) {
return function (input, cellFilter, args1, args2) {

if (!cellFilter) {
return (angular.isNumber(input) || (input)) ? input : '-';
} else {
if (cellFilter.match(/pctg|percent|pctgFilter|incidence/ig)) {
return (input > 0 && input < 1.0000000) ? $filter(cellFilter)(input, args1, args2) : '-';
} else {
return (angular.isNumber(input) || (input)) ? $filter(cellFilter)(input, args1, args2) : '-';
}
}

};
});

最佳答案

每当您遇到一个变得过于复杂而无法重构的函数时,请尝试将一些较小的语句提取到简洁命名的变量中。它使我们的大脑更容易跟踪功能的需求,并且对于阅读您的代码的新开发人员来说也更具可读性。

var inputHasValue = angular.isNumber(input) || input;
if(!inputHasValue){
return '-';
}
if (!cellFilter) {
return input;
}

var isPercentageCell = cellFilter.match(/pctg|percent|pctgFilter|incidence/ig);
var valueIsInRange = input > 0 && input < 1;
if(!isPercentageCell || valueIsInRange){
return $filter(cellFilter)(input, args1, args2);
}
return '-';

关于javascript - 如何使用 AngularJS 过滤器捕获 null、undefined、空白值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107465/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com