0

我是新手,而且我的英语也不是那么好。我的问题是我正在尝试从数组构建对象表,但没有成功。目标是构建简单的发票脚本,但我卡住了。假设我有一个包含一些位置的数组:

recordArr = [值,valueWithTax,taxInPercent]

我想构建一个对象数组,通过键“taxInPercent”对位置(值,valueWithTax)求和。我现在做的是:

for(key in recordArr){   
    if ( isNaN(SortrRecordArr[recordArr[key][2]]) ) {
        SortrRecordArr[recordArr[key][2]] = [recordArr[0], recordArr[1]]
       }
       else {
          newValue = SortrRecordArr[recordArr[key][2]][0] + recordArr[0]
          newValueWithTax = SortrRecordArr[recordArr[key][2]][1] + recordArr[1]

          SortrRecordArr[recordArr[key][2]] = [newValue, newValueWithTax];
       }        
}

但这仅保留出现在 recordArr 中的最后一个值

当然,我之前已经定义了对象和变量。我希望我自己清楚。

所以它是这样的:

假设我有一个数组:

recordArr[1] = [1 , 2 , 23]
recordArr[2] = [1 , 2 , 23]
recordArr[3] = [2 , 3 , 8]
recordArr[4] = [2 , 3 , 8]
recordArr[5] = [3 , 4 , 5]
recordArr[6] = [3 , 4 , 5]

我正在搜索结果,例如:

SortRecordArray[23] = [2 , 4]
SortRecordArray[8] = [4 , 6]
SortRecordArray[5] = [6 , 8]

我希望更清楚地了解我正在尝试做什么。

谢谢你的建议,请温柔一点。

4

1 回答 1

1

如果项目存在于对象中,您应该使用.hasOwnProperty()检查。

这是您需要的完整编辑代码,

var recordArr = [];
var SortrRecordArr = [];

recordArr[1] = [1 , 2 , 23];
recordArr[2] = [1 , 2 , 23];
recordArr[3] = [2 , 3 , 8];
recordArr[4] = [2 , 3 , 8];
recordArr[5] = [3 , 4 , 5];
recordArr[6] = [3 , 4 , 5];

for(var key in recordArr){   
    if (!SortrRecordArr.hasOwnProperty(recordArr[key][2])) {
        SortrRecordArr[recordArr[key][2]] = [recordArr[key][0], recordArr[key][2]];
    } else {
        newValue = SortrRecordArr[recordArr[key][2]][0] + recordArr[key][0];
        newValueWithTax = SortrRecordArr[recordArr[key][2]][3] + recordArr[key][4];
        SortrRecordArr[recordArr[key][2]] = [newValue, newValueWithTax];
     }        
}

console.log(SortrRecordArr)
​

演示

于 2012-08-09T13:14:13.123 回答