Javascript 为大于零的项创建对象数组

Javascript 为大于零的项创建对象数组,javascript,reactjs,Javascript,Reactjs,我需要为大于零的项创建一个对象数组。我有以下代码: const payments = []; if (values.ops > 0) { payments.push({ "tax": options.find(item => item.value === "ops"), "type": ops.find(item => item.value === "tax"), "year": values.year, "period": ops.find

我需要为大于零的项创建一个对象数组。我有以下代码:

const payments = [];
if (values.ops > 0) {
  payments.push({
    "tax": options.find(item => item.value === "ops"),
    "type": ops.find(item => item.value === "tax"),
    "year": values.year,
    "period": ops.find(item => item.type === "period"),
    "sum": values.ops
  })
};
if (values.ops1 > 0) {
  payments.push({
    "tax": options.find(item => item.value === "ops1"),
    "type": ops1.find(item => item.value === "tax"),
    "year": values.year,
    "period": ops1.find(item => item.type === "period"),
    "sum": values.ops1
  })
};
if (values.oms > 0) {
  payments.push({
    "tax": options.find(item => item.value === "oms"),
    "type": oms.find(item => item.value === "tax"),
    "year": values.year,
    "period": oms.find(item => item.type === "period"),
    "sum": values.oms
  })
};

是否有任何方法可以简化此操作,以便我可以检查项目是否大于0并进行付款。只推一次?

您可以使用创建一个映射器对象。这将映射
“ops”
键和
ops
数组作为值,依此类推。然后循环遍历此对象的,并根据
值[key]

const payments = [];

[
  "ops", 
  "ops1", 
  "oms"
].forEach(prop=>{
    if(values[props]>0){
        payments;.push({
            tax: options.find(item => item.value === prop),
            type: ops.find(item => item.value === "tax"),
            year: values.year,
            period: ops.find(item => item.type === "period"),
            sum: values[prop]
        })
    }
})

const映射器={
行动计划,
ops1,
oms
}
施工费用=[]
for(Object.entries的常量[键,数组](映射器)){
如果(值[键]>0)
付款。推({
“tax”:options.find(item=>item.value==key),
“type”:array.find(item=>item.value==“tax”),
“年”:值。年,
“period”:数组.find(item=>item.type==“period”),
“总和”:值[键]
})
}

您可以使用创建
映射器
对象。这将映射
“ops”
键和
ops
数组作为值,依此类推。然后循环遍历此对象的,并根据
值[key]

const映射器={
行动计划,
ops1,
oms
}
施工费用=[]
for(Object.entries的常量[键,数组](映射器)){
如果(值[键]>0)
付款。推({
“tax”:options.find(item=>item.value==key),
“type”:array.find(item=>item.value==“tax”),
“年”:值。年,
“period”:数组.find(item=>item.type==“period”),
“总和”:值[键]
})
}

您可以为
ops
ops1
oms
获取一个对象,并在必要时迭代键并删除新对象

data = { ops, ops1, oms }

Object.keys(data).forEach(k => {
    if (values[k] <= 0) return;
    payments.push({
        tax: options.find(item => item.value === k),
        type: data[k].find(item => item.value === "tax"),
        year: values.year,
        period: data[k].find(item => item.type === "period"),
        sum: values[k]
    });
});
data={ops,ops1,oms}
Object.keys(数据).forEach(k=>{
如果(值[k]项.value==k),
类型:数据[k]。查找(项=>项。值==“税”),
年份:values.year,
期间:数据[k]。查找(项=>item.type==“期间”),
总和:值[k]
});
});

您可以为
ops
ops1
oms
获取一个对象,并在必要时迭代键并删除新对象

data = { ops, ops1, oms }

Object.keys(data).forEach(k => {
    if (values[k] <= 0) return;
    payments.push({
        tax: options.find(item => item.value === k),
        type: data[k].find(item => item.value === "tax"),
        year: values.year,
        period: data[k].find(item => item.type === "period"),
        sum: values[k]
    });
});
data={ops,ops1,oms}
Object.keys(数据).forEach(k=>{
如果(值[k]项.value==k),
类型:数据[k]。查找(项=>项。值==“税”),
年份:values.year,
期间:数据[k]。查找(项=>item.type==“期间”),
总和:值[k]
});
});

您能为
变量发布一个示例吗?谢谢您能为
变量发布一个示例吗?谢谢对于
类型
期间
操作
数组不固定对于
类型
期间
操作
数组不固定