1

私はpkの長い配列を持っています。これはjsonオブジェクトに変換されていますpk:countこれは私がそれを作成した方法です

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とnameのオブジェクト配列があります。したがって、Object.pkと言うと、pk値が返されます。
2番目のオブジェクト配列のすべてのpkが、pk:countを持つ最初のオブジェクトに存在するわけではありません。

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

次に、最初のオブジェクトに存在するpkカウントに基づいて2番目のオブジェクト配列を並べ替えます。最初のオブジェクトのすべてのpkをどのようにトラバースするかわかりません。配列ではないからです。別の方法で作成する必要がありますか?

  1. jqueryで最初のオブジェクトをトラバースするにはどうすればよいですか?
  2. 最初のPKのpkの数に基づいて2番目のオブジェクト配列を並べ替えるにはどうすればよいですか?
4

2 に答える 2

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;
  }
}

次に、2番目のオブジェクトを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
于 2013-01-10T22:42:28.513 に答える
1

あなたが提示するデータは実際のjavascript構文で表示されていないため、あなたが何を求めているのか正確にはわかりません。ただし、オブジェクトのすべてのプロパティを反復処理するには、次のようにします。

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

注:オブジェクトのプロパティには定義された順序はありません。

于 2013-01-10T22:43:13.023 に答える