我有很多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。因为它不是一个数组。我应该以不同的方式创建它吗?
答案 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
}
注意:对象的属性没有定义的顺序。