如何更新For循环javascript中的+1数组条目

时间:2014-11-21 21:34:47

标签: javascript

我是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
} 

3 个答案:

答案 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,这意味着当i4时,您的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值的字符串。根据操作,您可能无法获得预期的结果。