2012-08-09 96 views
0

我是新手,也是我的英語不是那麼好。我的問題是,我試圖從數組中建立一個對象表,但沒有成功。目標是構建簡單的發票腳本,但我卡住了。比方說,我有一些位置的數組:jQuery自定義對象排序

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] 

我在尋找FO類似的結果:

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

我希望這是更清楚地瞭解什麼我正在努力。

感謝您的建議,並請溫柔。

+0

我不明白你想要得到的結果,但它看起來像你也許可以利用[ underscore.js的'sortBy'或'groupBy'函數](http://underscorejs.org/#sortBy)。 – 2012-08-09 14:47:27

回答

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

+0

是的,但我在之前沒有說過這個記錄有多一個項目。 – 2012-08-09 13:23:55

+0

所以你可以追加一個例子recordArr到你的問題有多個項目? – ocanal 2012-08-09 13:26:59

+0

我編輯了我的問題以更好地查看我的問題 – 2012-08-09 14:42:00