Javascript 如何对Json使用排序函数?

Javascript 如何对Json使用排序函数?,javascript,json,sorting,Javascript,Json,Sorting,我正在使用中的代码对Json进行排序。但它不起作用,我使用请求存储来自web API的Json,并使用jsonpath 它不是排序,它只是给我发送GET内容(排序之前)。我觉得这是parseFloat(第15行)的问题,但我不确定如何修复它。我进去测试了一下,应该是.rank而不是.rank 我的代码: var request = require('request'); var jp = require('jsonpath'); var options = { 'method': 'GET

我正在使用中的代码对Json进行排序。但它不起作用,我使用请求存储来自web API的Json,并使用jsonpath

它不是排序,它只是给我发送GET内容(排序之前)。我觉得这是parseFloat(第15行)的问题,但我不确定如何修复它。我进去测试了一下,应该是
.rank
而不是
.rank

我的代码:

var request = require('request');
var jp = require('jsonpath');

var options = {
  'method': 'GET',
  'url': 'https://groups.roblox.com/v1/groups/2642914/roles',
  'headers': {
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  var obj = JSON.parse(response.body);
  var rolesList = jp.query(obj, '$..roles');
  rolesList.sort(function(a, b) {
    return parseFloat(a.rank) - parseFloat(b.rank);
});
    console.log(rolesList)
});
始终返回所有匹配项的数组

在obj中查找匹配pathExpression的元素返回满足提供的JSONPath表达式的元素数组,如果没有匹配的元素,则返回空数组。如果指定,则仅返回第一个计数元素

您将从该jsonpath查询rolesList=
[[[{…秩:…},{},{}…]]
,因此排序作用于单个元素数组

您可以改为使用以找到第一个匹配项

$…角色
是不必要的,除非您需要获取任意嵌套级别属性,而这里不是这种情况。在第一层就可以到达

我在任何地方都使用过CORS,因此可以在浏览器()中运行:


不起作用
对进一步调试问题没有帮助,因为这是一个给定的问题。您能否提供一条错误消息或放置额外的
控制台。日志以进一步缩小问题范围?啊,是的。当我手动获取JSON并将其硬编码到测试示例中时,排序效果很好。你使用请求npm包有什么原因吗?这是为我的Discord机器人设计的。
var request = require('request');
var jp = require('jsonpath');
var options = {
  'method': 'GET',
  'url': 'https://cors-anywhere.herokuapp.com/https://groups.roblox.com/v1/groups/2642914/roles',
  'headers': {
  }
};
request(options, function (error, response) {
  if (error) console.error(error);
  var obj = JSON.parse(response.body);
  var rolesList = jp.value(obj, '$.roles');
  rolesList.sort(function(a, b) {
    return a.rank - b.rank;
  });
  
  console.log(rolesList)
});