2013-01-10 29 views
1

我有一個很長的pks數組。這已被改造成一個JSON對象pk:count這我如何創建它JSON數據解析,排序和與jquery合併

var count = {}; 
topPKs=[]; 
topPKs.push(pk1); 
topPKs.push(pk2); 
topPKs.push(pk3); 
topPKs.push(pk1); 
topPKs.push(pk1); 
$.each(topPKs, function(key, value) { 
        if(!count[value]) 
         count[value] = 1; 
        else 
         count[value]++; 
       }); 

這是它的外觀在控制檯:

Object 
511909695: 3 
523212317: 2 
530009912: 3 
532408581: 2 
533498979: 1 
555813096: 1 
574723371: 1 
574938523: 1 
580120684: 6 
584152864: 2 

有一個對象數組與PK和名稱。所以當我說Object.pk時,它返回pk值。
不是pk:count中的第一個對象中的第二個對象數組中的所有pks都存在。

0: Object 
    pk: "609819451" 
    name: "Some Name" 
1: Object 
2: Object 

現在我想根據第一個對象中存在的pk計數來排序第二個對象數組。 我不知道如何遍歷第一個對象中的所有pks。因爲它不是一個數組。我應該創建一個不同的方式?

  1. 如何用jquery遍歷第一個對象?
  2. 我將如何根據第一PK中的PK計數對第二個對象數組進行排序?
+0

你可以添加屬性到第二個對象嗎? – jcolebrand

+0

我從RESTful響應中獲得第二個對象。我可以遍歷它添加我的自定義屬性。 –

+0

這就是我要問的,是的。 – jcolebrand

回答

1
for(var k1 in obj1){ var record = obj1[k1]; 
    for(var k2 in obj2){ 
    if (obj2[k2].pk == record) 
     obj2[k2].count = record.count; 
    } 
} 

然後sort由Count屬性

obj2.sort(function _internalSort(l,r){var x = l.count || 0, y = r.count || 0;return y - x; }) 
//this handles the case where a value appears in the second list but not the first 
//by forcing all values to have a count for the sorting method 
+0

讓我們[在聊天繼續討論](http://chat.stackoverflow.com/rooms/22551/discussion-between-jcolebrand -and-himanshu-yadav) – jcolebrand

1

這我不清楚你問什麼,因爲你目前的數據沒有實際的JavaScript語法所示的第二個對象。但是,通過對象的所有屬性迭代,你可以這樣做:

for (var prop in obj) { 
    var item = obj[prop]; 
    // prop is the property name 
    // item is the value of the property 
} 

注:一個對象的屬性沒有定義的順序。

+0

在這裏,obj [prop]給了我pk:count的count部分。我也需要PK。 –

+0

@HimanshuYadav - 'prop'是'pk'的值。請參閱我在答案中添加到代碼中的評論。 – jfriend00

+0

謝謝。我很笨,你很棒。 –