【问题标题】:javascript or PHP sorting array of x,y coordinatesx,y坐标的javascript或PHP排序数组
【发布时间】:2013-06-24 21:45:06
【问题描述】:

我用以下形式的 json 数据填充了一个 highcharts 图表: [[x,y],[x,y],[x,y],[x,y]]

数据先按x值排序,因为文件得到一个未排序的数字列表,然后统计数字出现的次数。这存储为 [number,count]。 它绘制为 X,Y 以展示我们的数据库流量。

现在,我想进行排序,以便在列表中看到 10 个最常请求的值。 如何通过此 Y 参数对 json 对象进行排序?谢谢!

样本数据:

[[4,1],[20,1],[43,1],[57,4],[59,1],[60,1],[61,1],[66,1],[68,3],[70,3],[72,2],[75,1],[77,3],[80,2],[81,3],[82,1],[83,1],[84,4],[85,5],[86,3],[87,1],[88,5],[90,7],[92,5],[95,2],[97,4],[98,4],[99,1],[100,6],[102,5],[103,3],[104,15],[105,3],[108,3],[109,2],[110,2],[111,2],[112,3],[113,7],[114,8],[115,11],[116,7],[117,15],[118,9],[119,4],[120,16],[121,7],[122,4],[123,6],[124,3],[125,1],[126,7],[127,5],[128,13],[129,5],[130,11],[131,13],[132,15],[133,17],[134,14],[135,11],[136,5],[137,5],[138,9],[139,7],[140,2],[141,1],[142,7],[143,2],[144,4],[145,11],[146,10],[147,9],[148,9],[149,7],[150,6],[151,12],[152,3],[153,9],[154,5],[155,6],[156,5],[157,5],[158,8],[159,10],[160,6],[161,2],[162,3],[163,45],[164,3],[165,8],[166,14],[167,12],[168,3],[169,5],[170,3],[171,8],[172,6],[173,9],[174,8],[175,11],[176,24],[177,23],[178,4],[179,3],[180,3],[181,11],[182,7],[183,7],[184,5],[185,7],[186,15],[187,11],[188,12],[189,9],[190,8],[191,6],[192,7],[193,4],[194,3],[195,12],[196,5],[197,8],[198,6],[199,16],[200,4],[201,14],[202,10],[203,9],[204,12],[205,8],[206,6],[207,6],[208,4],[209,12],[210,6],[211,7],[212,8],[213,12],[214,9],[215,7],[216,3],[217,11],[218,13],[219,9],[220,8],[221,12],[222,8],[223,9],[224,2],[225,5],[226,19],[227,9],[228,7],[229,11],[230,5],[231,3],[232,4],[233,11],[234,8],[235,11],[236,10],[237,5],[238,8],[239,15],[240,13],[241,9],[242,7],[243,7],[244,14]]

【问题讨论】:

标签: php json sorting


【解决方案1】:

sort 与自定义比较功能一起使用:

data.sort(function(a, b){
  return a[1] - b[1];
});

例子:

var data = [[4,1],[20,1],[66,1],[68,3],[70,3],[72,2],[84,1],[96,4],[102,2]];
data.sort(function(a, b){
  return a[1] - b[1];
});
// data now contains:

   [[4,1],[20,1],[66,1],[84,1],[72,2],[102,2],[68,3],[70,3],[96,4]];

如果您想按降序排序,只需使用b[1] - a[1]

【讨论】:

  • 你能帮忙解释一下吗?我以前看过这个答案,但在我看来它比较了 2 个变量,而不是对整个数组进行排序。
  • @user1771824 见链接developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… sort 函数对数组进行所有排序,它内置在 Javascript 中。你只需要告诉它如何比较两个元素,它就可以对整个数组进行排序。
  • @user1771824 如果您按字典顺序对字符串进行排序,您甚至不必告诉它如何比较它们。它已经知道了。试用:['orange', 'banana', 'apple', 'pear', 'strawberry', 'blueberry'].sort();
  • 有没有类似的解决方案可以与 PHP 一起使用?因为,以我构建数组的方式,分辨率在到达 javascript 时会丢失。
  • @user1771824 你可以使用usort函数在php中做同样的事情。
【解决方案2】:

可以使用js的sort函数

var myList = [[1,2], [1,1]];
myLisyt.sort(function(item1, item2) {return item1[1] - item2[1]});

结果是:[[1,1], [1,2]]

【讨论】:

  • 谢谢大家!这行得通,我想我读错了。它返回一个我可以迭代的对象,非常好。
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 2016-08-02
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 2011-10-23
  • 1970-01-01
相关资源
最近更新 更多