Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何迭代按对象属性排序的对象数组?_Jquery_Ajax - Fatal编程技术网

Jquery 如何迭代按对象属性排序的对象数组?

Jquery 如何迭代按对象属性排序的对象数组?,jquery,ajax,Jquery,Ajax,我的代码可以工作,但是对象的顺序不正确 这就是JSON的样子: 在数据中,数组元素11中的num属性的值为420,即通道号 我想做的是根据通道号num在循环中迭代,而不是按照JSON中显示的可用通道的顺序。如何更改循环,使其按通道号进行迭代 更多信息: 阵列46-通道号1: 阵列26-通道号2: 订单应该是 46,26,47,27,48,24按“num”数组顺序排列 现在:396384395390386可用通道顺序排序函数接受一个函数作为参数来定义可选的排序方式。要按频道编号订购可用的\u频道

我的代码可以工作,但是对象的顺序不正确

这就是JSON的样子:

在数据中,数组元素11中的num属性的值为420,即通道号

我想做的是根据通道号num在循环中迭代,而不是按照JSON中显示的可用通道的顺序。如何更改循环,使其按通道号进行迭代

更多信息:

阵列46-通道号1:

阵列26-通道号2:

订单应该是

46,26,47,27,48,24按“num”数组顺序排列

现在:396384395390386可用通道顺序排序函数接受一个函数作为参数来定义可选的排序方式。要按频道编号订购可用的\u频道,请尝试以下操作:

keys.sort(function(a, b) {
    return a.num - b.num;
});
我们在这里所做的是定义一个排序函数,它将使用a和b中的num属性来测试哪一个先到。请注意,如果返回值小于0,则a将首先出现;如果返回值大于0,则b将首先出现;如果返回值等于0,则两者将一起出现

您可以找到有关排序功能的更多信息

排序完成后,只需添加$.each即可


你是说你想在输出之前对数字进行排序吗?你的目标在PHP中并不明确,它工作得很好:|但我目前正在使用jqueryWhat工作得很好?正如我上面提到的,你想要达到的目标并不明确。按照您在问题中编辑的顺序,为什么48会出现在26之前?非常感谢,我应该在哪里添加排序功能?您可以在声明keys var之后,在第17行的for循环之前添加它。我尝试了什么,需要修复什么?我忘记关闭排序功能,现在更新了答案。您还遇到了哪些错误?另外,这里的var num=res.available_channels[keys[i]].num;我来自哪里?
keys.sort(function(a, b) {
    return a.num - b.num;
});
$.each(keys, function(i, k) {
    $('#channellist').append(k.num + '<br>');
});