jQuery自定义对象排序

时间:2012-08-09 13:01:45

标签: jquery sorting object

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

recordArr = [value,valueWithTax,taxInPercent]

我想构建一个对象数组,用关键字“taxInPercent”对位置(value,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]

我希望能更清楚地理解我想要做的事情。

感谢您的建议,请保持温和。

1 个答案:

答案 0 :(得分: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)
​

DEMO