首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java脚本代码与6个不同字段的值相加

Java脚本代码与6个不同字段的值相加
EN

Stack Overflow用户
提问于 2022-02-21 15:17:15
回答 2查看 54关注 0票数 -1

在“总计”字段中为所需代码添加值的图像最初我注册了4个求和文件,但现在又添加了2个字段。作为4个字段,我有下面的代码,但增加2个,它正变得更加复杂,根据我的知识。

这6份文件所需的金额

代码语言:javascript
复制
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.history.ChangeItemBean

// Get values from 4 custom fields
def val1 =  getCustomFieldValue("FTE US") as Double
def val2 = getCustomFieldValue("FTE OGS IND") as Double
def val3 = getCustomFieldValue("FTE OGS PHL") as Double
def val4 = getCustomFieldValue("FTE Vendor") as Double

// check both fields contain valid numeric values
if (val1 == null && val2 == null && val3 == null && val4 == null){
    return 0
}else if (val1 != null && val2 != null&& val3 != null&& val4 != null){
     return val1 + val2 + val3 + val4
}else if (val1 == null && val2 != null&& val3 != null&& val4 != null){
     return 0 + val2 + val3 + val4
}else if (val2 == null && val1 != null&& val3 != null&& val4 != null){
     return 0 + val1 + val3 + val4
}else if (val3 == null && val1 != null&& val2 != null&& val4 != null){
     return 0 + val1+ val2 + val4
}else if (val4 == null && val1 != null&& val2 != null&& val3 != null){
     return 0 + val1 + val2 + val3
}else if (val3 == null && val4 == null&& val1 != null&& val2 != null){
     return 0 + val1 + val2
}else if (val2 == null && val4 == null&& val1 != null&& val3 != null){
     return 0 + val1 + val3
}else if (val2 == null && val3 == null&& val1 != null&& val4 != null){
     return 0 + val1 + val4
}else if (val1 == null && val4 == null&& val2 != null&& val3 != null){
     return 0 + val2 + val3

}else if (val1 == null && val3 == null&& val2 != null&& val4 != null){
     return 0 + val2 + val4
}else if (val1 == null && val2 == null&& val3 != null&& val4 != null){
     return 0 + val3 + val4
}else{
    // return to some code to indicate a null value in one of the fields
 return "0"   
}
EN

回答 2

Stack Overflow用户

发布于 2022-02-21 15:28:58

将所有值放入数组中,然后调用:

代码语言:javascript
复制
[val1, val2, val3, val4].filter((x) => !isNaN(x)).reduce((a, b) => a + b)

我要做的是:

  • 使用filter删除“number”元素(!isNaN(x));
  • 使用减速机对所有剩余的元素进行求和。

可以将所有想要添加到上面数组的元素添加到上面。

票数 2
EN

Stack Overflow用户

发布于 2022-02-21 16:15:16

Javascript应该将Null添加为0,但是您可以确保使用类似于此处末尾的函数。此外,正如前面提到的,"def“和"as Double”在Javascript中无效。此测试代码正确警告4.5。

代码语言:javascript
复制
let val1 = returnDouble();
let val2 = retNull();
let val3 = returnDouble();
let val4 = returnDouble();

alert(val1 + val2 + val3 + val4);

function retNull() {
    return(null);
}

function returnDouble () {
    return(1.5);
}

// OR to be very sure use a Conditional Operator to make Null into a 0 integer
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

function makeNullZero(value) {
    return(Null == value ? 0 : value);

}

您导入的组件似乎是Java (而不是Javascript) https://docs.atlassian.com/software/jira/docs/api/7.6.1/com/atlassian/jira/component/ComponentAccessor.html

如果您的变量可以被赋值为null,则将其设为双(带大写D),以避免错误,并将其转换为零,如下所示:

代码语言:javascript
复制
     public static void main(String []args){
        Double val1 = makeNullZero(1.5);
        Double val2 = makeNullZero(null);
        
        Double sum = val1 + val2;
        System.out.println(sum);
     }
     
     static Double makeNullZero(Double val) {
         return null == val ? 0 : val;
     }

所以对于您的用例:

代码语言:javascript
复制
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.history.ChangeItemBean

// Get values from 4 custom fields
Double val1 = makeNullZero(getCustomFieldValue("FTE US"));
Double val2 = makeNullZero(getCustomFieldValue("FTE OGS IND"));
Double val3 = makeNullZero(getCustomFieldValue("FTE OGS PHL"));
Double val4 = makeNullZero(getCustomFieldValue("FTE PR"));
Double val5 = makeNullZero(getCustomFieldValue("FTE COL"));
Double val6 = makeNullZero(getCustomFieldValue("FTE Vendor"));

Double sum = val1 + val2 + val3 + val4 + val5 + val6;
return sum;

static Double makeNullZero(Double val) {
    return null == val ? 0 : val;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71208740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档