我目前有一些JSON数据,如下所示:
{"data": [
{"student_id": "bobby", "solved": 19},
{"student_id": "smith", "solved": 20}
]}
现在,我现在正在做的是在for循环中将求解的值推入名为
newData
的数组中,如下所示:newData.push(data['data'][i].solved);
现在,我使用此函数按值对它们进行排序:
newData.sort(function(a,b){
return a-b;
});
太好了,现在我按顺序排列了一组值。但是,如何检索与按顺序排序的这些值相对应的名称?如果可以有名称并在两个数组中求解,那将很好,但是每个索引对应于原始JSON数据中的相同名称。我猜也可以对对象和值进行排序的一个巨大数组。
最佳答案
您可以先通过solved
键对数据进行排序,然后使用map()
以排序顺序返回两个独立的结果数组。
var obj = {"data": [{"student_id": "bobby", "solved": 19}, {"student_id": "smith", "solved": 20}]}
var newData = obj.data.sort(function(a, b) {
return b.solved - a.solved;
});
var numbers = newData.map(e => e.solved);
var names = newData.map(e => e.student_id);
console.log(numbers);
console.log(names);