Javascript 用变化的数据构造多维对象
我有三个函数可以创建三个对象,Javascript 用变化的数据构造多维对象,javascript,object,Javascript,Object,我有三个函数可以创建三个对象,firstPayment,interimPayment和finalPayment firstPayment将始终包含数据。但是不应该总是使用interimPayment,相同的finalPayment 不需要interimPayment或finalPayment的符号基于另一个变量numberOfPayments 如果numberOfPayments===1,则只有firstPayment将有数据。如果numberOfPayments===2则需要firstPaym
firstPayment
,interimPayment
和finalPayment
firstPayment
将始终包含数据。但是不应该总是使用interimPayment
,相同的finalPayment
不需要interimPayment
或finalPayment
的符号基于另一个变量numberOfPayments
如果numberOfPayments===1
,则只有firstPayment
将有数据。如果numberOfPayments===2
则需要firstPayment
和finalPayment
。最后,如果numberOfPayments>2
,则需要所有三个支付对象
我正在尝试解决如何根据numberOfPayments
变量将所有这些对象添加到另一个对象paymentSchedule
这是我的代码开始,但我有点迷路了
getPaymentSchedule(id) {
const firstPayment = this.getFirstPayment(id);
const numberOfPayments = this.getNumberOfPayments(id);
if (numberOfPayments === 2) {
const finalPayment = this.getFinalPayment(id);
} else if (numberOfPayments > 2) {
const interimPayments = this.getInterimPayments(id);
}
}
这就是我被卡住的地方。我需要按此顺序添加三个对象firstPayment
、getInterimPayments
和finalPayment
,但显然只有在设置了这三个对象之后才需要添加。我觉得我可以用比很多很多if语句更快的方法来实现这一点
我试图实现的paymentSchedule
示例:
{
firstPayment: {
label: "foo",
amount: 123
},
interimPayment: {
label: "foo",
amount: 123
},
finalPayment: {
label: "foo",
amount: 123
},
}
or
{
firstPayment: {
label: "foo",
amount: 123
},
finalPayment: {
label: "foo",
amount: 123
},
}
也许我错过了什么,但这就是你要找的吗
getPaymentSchedule(id) {
const numberOfPayments = this.getNumberOfPayments(id);
const schedule = {};
schedule.firstPayment = this.getFirstPayment(id);
if (numberOfPayments === 2) {
schedule.finalPayment = this.getFinalPayment(id);
} else if (numberOfPayments > 2) {
schedule.interimPayments = this.getInterimPayments(id);
}
return schedule;
}
可以将数组与对象一起使用。数组反映了顺序和对象
[
{ // exists always
name: 'firstPayment',
label: 'foo',
amount: 123
},
{ // numberOfPayments > 2
name: 'interimPayment',
label: 'foo',
amount: 123
},
{ // numberOfPayments > 1
name: 'finalPayment',
label: 'foo',
amount: 123
}
]
要生成,您可以使用如下内容
var schedule = [].concat(
this.getFirstPayment(id)
numberOfPayments > 2 ? this.getInterimPayments(id) : [],
numberOfPayments > 1 ? this.getFinalPayment(id) : []
);
这将生成一个包含所需付款日期的数组。请同时添加对象。@NinaScholz您指的是哪个对象?这是关于设计的。如果不知道如何使用付款和时间表,很难说设计应该如何。你能解释一下你想做什么吗?我假设您正在使用ES6类?@Halcyon paymentSchedule尚未创建。我试图在这个函数中创建它。提到的三个对象就是
{“label”:“foo”,“amount”:123}
我理解,但是时间表应该是什么样子取决于您如何使用它。你不能只返回一个带有3个付款键的对象,因为根据付款数量,它们是可选的。是的,但我刚刚意识到我需要交换订单,因为我需要在最终付款之前进行中间付款,所以,也许这应该是一个对象数组?你不能对对象进行排序,所以如果顺序很重要,那么你需要其他东西。我觉得我错过了在这里设计的机会。为什么顺序很重要?我需要遍历并输出数据。但必须是首次付款>期中付款>最终付款。所以它一定是有序的,我想我不能帮你渡过难关。附近有人能帮你吗?