我是jscript编程的新手,所以你能提供的任何帮助都会非常感激。
我创建了一个包含5行和4列的二维数组。 LOOKUP_TAX_POSITION是一个检索用户输入数据的函数调用。标记为base的列不是由用户输入的,而是需要基于用户输入的其他信息来计算。加载表后,我使用之前的“行”数据更新第1-4行标记为“base”的列中的值。第0行的基值将保持为0.
我正在使用jscript并且已经搜索了一百万种方法来确定如何,或者是否有可能在For循环中引用+1索引但没有成功。感谢您提供的任何指导。这是我的代码
var RateTableArray = [
{min: ('0'), max: LOOKUP_TAX_POSITION ( 'FDMX1' ), base: ('0'), rate:LOOKUP_TAX_POSITION ( 'RATE1')},
{min: LOOKUP_TAX_POSITION ( 'FDMN2' ), max: LOOKUP_TAX_POSITION ( 'FDMX2' ), base: ('0'), rate:LOOKUP_TAX_POSITION ( 'RATE2' )},
{min: LOOKUP_TAX_POSITION ( 'FDMN3' ), max: LOOKUP_TAX_POSITION ( 'FDMX3' ), base: ('0'), rate:LOOKUP_TAX_POSITION ( 'RATE3' )},
{min: LOOKUP_TAX_POSITION ( 'FDMN4' ), max: LOOKUP_TAX_POSITION ( 'FDMX4' ), base: ('0'), rate:LOOKUP_TAX_POSITION ( 'RATE4' )},
{min: LOOKUP_TAX_POSITION ( 'FDMN5' ), max: ('0'), base: ('0'), rate:LOOKUP_TAX_POSITION ( 'RATE5')},
];
for (i=0; i <= 4 ;i++) {
Base = (RateTableArray[i].max - RateTableArray[i].min) * RateTableArray[i].rate + RateTableArray[i].base ;
RateTableArray[i+1].base = (Base) ; //this is where I am stuck
}
答案 0 :(得分:1)
我不清楚//this is where I am stuck
的意思。
我唯一能想到的是,对于最后一个条目,您为不存在的数组索引设置base
,也许您得到TypeError
?
这可以通过将for
循环更改为
for ( i=0; i < RateTableArray.length-1 ; i++){
此外,我的代码回复者对那段冗长的代码感到畏缩,并希望看到
var rate, base;
for ( i=0; i < RateTableArray.length-1 ; i++){
rate = RateTableArray[i];
base = (rate.max - rate .min) * rate.rate + rate.base;
RateTableArray[i+1].base = base;
}
答案 1 :(得分:0)
您的问题是使用以下代码
for (i=0; i <= 4 ;i++)
您的循环直至i <= 4
,这意味着当i
为4
时,您的RateTableArray[i+1]
将访问5
处不存在的索引。你的循环必须是
for (i=0; i < 4 ;i++)
您需要删除=
标志。
答案 2 :(得分:0)
在对数组元素进行操作时,我更喜欢功能样式。它需要一点时间习惯,但是一旦掌握了它就会更容易和更易读。
RateTableArray.map(function (rate, i, array) {
if (array[i+1]) {
array[i+1].base = (rate.max - rate.min) * rate.rate + rate.base;
}
});
我看到的另一个潜在问题是你的值是某些min,max,base值的字符串。根据操作,您可能无法获得预期的结果。