JSON数据解析,排序和与jquery合并

时间:2013-01-10 22:34:07

标签: jquery json

我有很多pks。哪个已被转换为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值。
并非第二个对象数组中的所有pks都存在于pk:count。

的第一个对象中
0: Object
    pk: "609819451"
    name: "Some Name"
1: Object
2: Object

现在我想根据第一个对象中存在的pk计数对第二个对象数组进行排序。 我不确定如何遍历第一个对象中的所有pks。因为它不是一个数组。我应该以不同的方式创建它吗?

  1. 如何使用jquery遍历第一个对象?
  2. 如何根据第一个PK中的pk计数对第二个对象数组进行排序?

2 个答案:

答案 0 :(得分: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计数属性

的第二个对象
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

答案 1 :(得分:1)

我不清楚你究竟在问什么,因为你提供的数据没有以实际的javascript语法显示。但是,要迭代对象的所有属性,您可以这样做:

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

注意:对象的属性没有定义的顺序。