我目前有一些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);

08-25 12:54