Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Javascript/Coffeescript在值相同时对多个键上的对象数组进行排序_Javascript_Arrays_Sorting_Coffeescript - Fatal编程技术网

Javascript/Coffeescript在值相同时对多个键上的对象数组进行排序

Javascript/Coffeescript在值相同时对多个键上的对象数组进行排序,javascript,arrays,sorting,coffeescript,Javascript,Arrays,Sorting,Coffeescript,我试图按键对对象数组进行排序,但当对象a的键的值与对象b的键的值相同时,将检查下一个键,直到它们最终不同 我已尝试使用以下代码: rows.sort (a, b) -> for key, value of a if a[key] < b[key] return -1 else if a[key] > b[key] return 1 else continue 排序后的结果(这是我所期望的

我试图按键对对象数组进行排序,但当对象a的键的值与对象b的键的值相同时,将检查下一个键,直到它们最终不同

我已尝试使用以下代码:

rows.sort (a, b) ->
   for key, value of a
      if a[key] < b[key]
        return -1
      else if a[key] > b[key]
        return 1
      else
        continue
排序后的结果(这是我所期望的):

当命令被胡乱处理时,初始数组:

[ { date: '2013-02-02',
    cpc: 1.86,
    cost: 1.86,
    clicks: 1 },
  { date: '2013-02-04',
    cpc: 2.35,
    cost: 2.35,
    clicks: 1 },
  { date: '2013-02-05',
    cpc: 1.8375,
    cost: 14.7,
    clicks: 8 },
  { date: '2013-02-06',
    cpc: 1.17,
    cost: 7.02,
    clicks: 6 },
  { date: '2013-02-11',
    cpc: 1.9625,
    cost: 7.85,
    clicks: 4 },
  { date: '2013-02-12',
    cpc: 2.39,
    cost: 7.17,
    clicks: 3 },
  { date: '2013-02-16',
    cpc: 2.315,
    cost: 4.63,
    clicks: 2 },
  { date: '2013-02-18',
    cpc: 1.92,
    cost: 9.6,
    clicks: 5 },
  { date: '2013-02-20',
    cpc: 1.87,
    cost: 1.87,
    clicks: 1 },
  { date: '2013-02-21',
    cpc: 1.8566666666666667,
    cost: 5.57,
    clicks: 3 },
  { date: '2013-02-28',
    cpc: 2.2425,
    cost: 8.97,
    clicks: 4 },
  { date: '2013-03-01',
    cpc: 1.83,
    cost: 3.66,
    clicks: 2 },
  { date: '2013-02-03',
    cpc: 1.46,
    cost: 1.46,
    clicks: 1 },
  { date: '2013-02-07',
    cpc: 0.2,
    cost: 0.2,
    clicks: 1 },
  { date: '2013-02-09',
    cpc: 0.23,
    cost: 0.23,
    clicks: 1 },
  { date: '2013-02-10',
    cpc: 0.46,
    cost: 0.46,
    clicks: 1 },
  { date: '2013-02-17',
    cpc: 1.21,
    cost: 2.42,
    clicks: 2 },
  { date: '2013-02-19',
    cpc: 1.9233333333333331,
    cost: 17.31,
    clicks: 9 },
  { date: '2013-02-25',
    cpc: 1.5066666666666668,
    cost: 4.5200000000000005,
    clicks: 3 },
  { date: '2013-02-08',
    cpc: 1.7850000000000001,
    cost: 7.140000000000001,
    clicks: 4 },
  { date: '2013-02-13',
    cpc: 2.53,
    cost: 2.53,
    clicks: 1 },
  { date: '2013-02-14',
    cpc: 1.955,
    cost: 3.91,
    clicks: 2 },
  { date: '2013-02-15',
    cpc: 1.4949999999999999,
    cost: 2.9899999999999998,
    clicks: 2 },
  { date: '2013-02-22',
    cpc: 1.8375,
    cost: 7.35,
    clicks: 4 },
  { date: '2013-02-23',
    cpc: 2.265,
    cost: 9.06,
    clicks: 4 },
  { date: '2013-02-26',
    cpc: 2.6,
    cost: 2.6,
    clicks: 1 },
  { date: '2013-02-27',
    cpc: 2.118,
    cost: 10.59,
    clicks: 5 }]
使用Hussed数组排序的结果:

[ { date: '2013-02-02',
    cpc: 1.86,
    cost: 1.86,
    clicks: 1 },
  { date: '2013-02-03',
    cpc: 1.46,
    cost: 1.46,
    clicks: 1 },
  { date: '2013-02-04',
    cpc: 2.35,
    cost: 2.35,
    clicks: 1 },
  { date: '2013-02-05',
    cpc: 1.8375,
    cost: 14.7,
    clicks: 8 },
  { date: '2013-02-06',
    cpc: 1.17,
    cost: 7.02,
    clicks: 6 },
  { date: '2013-02-07',
    cpc: 0.2,
    cost: 0.2,
    clicks: 1 },
  { date: '2013-02-08',
    cpc: 1.7850000000000001,
    cost: 7.140000000000001,
    clicks: 4 },
  { date: '2013-02-10',
    cpc: 0.46,
    cost: 0.46,
    clicks: 1 },
  { date: '2013-02-11',
    cpc: 1.9625,
    cost: 7.85,
    clicks: 4 },
  { date: '2013-02-12',
    cpc: 2.39,
    cost: 7.17,
    clicks: 3 },
  { date: '2013-02-13',
    cpc: 2.53,
    cost: 2.53,
    clicks: 1 },
  { date: '2013-02-14',
    cpc: 1.955,
    cost: 3.91,
    clicks: 2 },
  { date: '2013-02-15',
    cpc: 1.4949999999999999,
    cost: 2.9899999999999998,
    clicks: 2 },
  { date: '2013-02-16',
    cpc: 2.315,
    cost: 4.63,
    clicks: 2 },
  { date: '2013-02-17',
    cpc: 1.21,
    cost: 2.42,
    clicks: 2 },
  { date: '2013-02-18',
    cpc: 1.92,
    cost: 9.6,
    clicks: 5 },
  { date: '2013-02-19',
    cpc: 1.9233333333333331,
    cost: 17.31,
    clicks: 9 },
  { date: '2013-02-20',
    cpc: 1.87,
    cost: 1.87,
    clicks: 1 },
  { date: '2013-02-21',
    cpc: 1.8566666666666667,
    cost: 5.57,
    clicks: 3 },
  { date: '2013-02-22',
    cpc: 1.8375,
    cost: 7.35,
    clicks: 4 },
  { date: '2013-02-23',
    cpc: 2.265,
    cost: 9.06,
    clicks: 4 },
  { date: '2013-02-09',
    cpc: 0.23,
    cost: 0.23,
    clicks: 1 },
  { date: '2013-02-25',
    cpc: 1.5066666666666668,
    cost: 4.5200000000000005,
    clicks: 3 },
  { date: '2013-02-26',
    cpc: 2.6,
    cost: 2.6,
    clicks: 1 },
  { date: '2013-02-27',
    cpc: 2.118,
    cost: 10.59,
    clicks: 5 },
  { date: '2013-02-28',
    cpc: 2.2425,
    cost: 8.97,
    clicks: 4 },
  { date: '2013-03-01',
    cpc: 1.83,
    cost: 3.66,
    clicks: 2 } ]

您不需要
继续
。当对象匹配时,确保返回
0

rows.sort(a,b)->
对于键,为
如果a[键]b[键]
返回1
返回0

更大的问题是对象键没有排序。没有理由期望每次通过for循环时,第一个键将是date,第二个键将是cpc,等等。您确实希望有一个预定义的键数组,按顺序排列,并使用它,而不仅仅是从对象中获取键列表

keys=[“a”、“b”、“c”]
rows.sort(a,b)->
用于输入钥匙
如果a[键]b[键]
返回1
返回0

您不需要
继续
。当对象匹配时,确保返回
0

rows.sort(a,b)->
对于键,为
如果a[键]b[键]
返回1
返回0

更大的问题是对象键没有排序。没有理由期望每次通过for循环时,第一个键将是date,第二个键将是cpc,等等。您确实希望有一个预定义的键数组,按顺序排列,并使用它,而不仅仅是从对象中获取键列表

keys=[“a”、“b”、“c”]
rows.sort(a,b)->
用于输入钥匙
如果a[键]b[键]
返回1
返回0

您不需要
继续
。当对象匹配时,确保返回
0

rows.sort(a,b)->
对于键,为
如果a[键]b[键]
返回1
返回0

更大的问题是对象键没有排序。没有理由期望每次通过for循环时,第一个键将是date,第二个键将是cpc,等等。您确实希望有一个预定义的键数组,按顺序排列,并使用它,而不仅仅是从对象中获取键列表

keys=[“a”、“b”、“c”]
rows.sort(a,b)->
用于输入钥匙
如果a[键]b[键]
返回1
返回0

您不需要
继续
。当对象匹配时,确保返回
0

rows.sort(a,b)->
对于键,为
如果a[键]b[键]
返回1
返回0

更大的问题是对象键没有排序。没有理由期望每次通过for循环时,第一个键将是date,第二个键将是cpc,等等。您确实希望有一个预定义的键数组,按顺序排列,并使用它,而不仅仅是从对象中获取键列表

keys=[“a”、“b”、“c”]
rows.sort(a,b)->
用于输入钥匙
如果a[键]b[键]
返回1
返回0

我正要问这个问题,但发现有一个类似的问题,结果发现答案是我已经在做的事情,但这有一个FOR IN循环。 我测试了一下,它没有给我想要的 然后,当值相同时,我决定将for-in循环换成更多的代码。 以下是结果


我正要问这个问题,但发现有一个类似的问题,结果发现答案是我已经在做的事情,但这有一个FOR IN循环。 我测试了一下,它没有给我想要的 然后,当值相同时,我决定将for-in循环换成更多的代码。 以下是结果


我正要问这个问题,但发现有一个类似的问题,结果发现答案是我已经在做的事情,但这有一个FOR IN循环。 我测试了一下,它没有给我想要的 然后,当值相同时,我决定将for-in循环换成更多的代码。 以下是结果


我正要问这个问题,但发现有一个类似的问题,结果发现答案是我已经在做的事情,但这有一个FOR IN循环。 我测试了一下,它没有给我想要的 然后,当值相同时,我决定将for-in循环换成更多的代码。 以下是结果


O哇。首先,感谢您的快速回复!我全神贯注于下一个关键点,甚至没有想到这一点。太明显了。非常感谢你!尽管如此,当初始数组的顺序不同时,我仍然会得到不同的顺序。然后您需要发布一个显示问题的数组示例(在问题中,而不是作为注释,以获得最佳结果)。是的,抱歉,添加了!;)(之前没有添加,因为它们很长)较大的问题-对象键没有排序。没有理由期望每次通过
for
循环时,第一个
键将是
date
,第二个将是
cpc
,等等。您确实希望有一个预定义的键数组,按顺序排列,并使用它,而不是仅仅从对象中获取
列表。@muistooshort很好。用密码把它移到了答案上。首先,感谢您的快速回复!我全神贯注于下一个关键点,甚至没有想到这一点。太明显了。Tha
[ { date: '2013-02-02',
    cpc: 1.86,
    cost: 1.86,
    clicks: 1 },
  { date: '2013-02-04',
    cpc: 2.35,
    cost: 2.35,
    clicks: 1 },
  { date: '2013-02-05',
    cpc: 1.8375,
    cost: 14.7,
    clicks: 8 },
  { date: '2013-02-06',
    cpc: 1.17,
    cost: 7.02,
    clicks: 6 },
  { date: '2013-02-11',
    cpc: 1.9625,
    cost: 7.85,
    clicks: 4 },
  { date: '2013-02-12',
    cpc: 2.39,
    cost: 7.17,
    clicks: 3 },
  { date: '2013-02-16',
    cpc: 2.315,
    cost: 4.63,
    clicks: 2 },
  { date: '2013-02-18',
    cpc: 1.92,
    cost: 9.6,
    clicks: 5 },
  { date: '2013-02-20',
    cpc: 1.87,
    cost: 1.87,
    clicks: 1 },
  { date: '2013-02-21',
    cpc: 1.8566666666666667,
    cost: 5.57,
    clicks: 3 },
  { date: '2013-02-28',
    cpc: 2.2425,
    cost: 8.97,
    clicks: 4 },
  { date: '2013-03-01',
    cpc: 1.83,
    cost: 3.66,
    clicks: 2 },
  { date: '2013-02-03',
    cpc: 1.46,
    cost: 1.46,
    clicks: 1 },
  { date: '2013-02-07',
    cpc: 0.2,
    cost: 0.2,
    clicks: 1 },
  { date: '2013-02-09',
    cpc: 0.23,
    cost: 0.23,
    clicks: 1 },
  { date: '2013-02-10',
    cpc: 0.46,
    cost: 0.46,
    clicks: 1 },
  { date: '2013-02-17',
    cpc: 1.21,
    cost: 2.42,
    clicks: 2 },
  { date: '2013-02-19',
    cpc: 1.9233333333333331,
    cost: 17.31,
    clicks: 9 },
  { date: '2013-02-25',
    cpc: 1.5066666666666668,
    cost: 4.5200000000000005,
    clicks: 3 },
  { date: '2013-02-08',
    cpc: 1.7850000000000001,
    cost: 7.140000000000001,
    clicks: 4 },
  { date: '2013-02-13',
    cpc: 2.53,
    cost: 2.53,
    clicks: 1 },
  { date: '2013-02-14',
    cpc: 1.955,
    cost: 3.91,
    clicks: 2 },
  { date: '2013-02-15',
    cpc: 1.4949999999999999,
    cost: 2.9899999999999998,
    clicks: 2 },
  { date: '2013-02-22',
    cpc: 1.8375,
    cost: 7.35,
    clicks: 4 },
  { date: '2013-02-23',
    cpc: 2.265,
    cost: 9.06,
    clicks: 4 },
  { date: '2013-02-26',
    cpc: 2.6,
    cost: 2.6,
    clicks: 1 },
  { date: '2013-02-27',
    cpc: 2.118,
    cost: 10.59,
    clicks: 5 }]
[ { date: '2013-02-02',
    cpc: 1.86,
    cost: 1.86,
    clicks: 1 },
  { date: '2013-02-03',
    cpc: 1.46,
    cost: 1.46,
    clicks: 1 },
  { date: '2013-02-04',
    cpc: 2.35,
    cost: 2.35,
    clicks: 1 },
  { date: '2013-02-05',
    cpc: 1.8375,
    cost: 14.7,
    clicks: 8 },
  { date: '2013-02-06',
    cpc: 1.17,
    cost: 7.02,
    clicks: 6 },
  { date: '2013-02-07',
    cpc: 0.2,
    cost: 0.2,
    clicks: 1 },
  { date: '2013-02-08',
    cpc: 1.7850000000000001,
    cost: 7.140000000000001,
    clicks: 4 },
  { date: '2013-02-10',
    cpc: 0.46,
    cost: 0.46,
    clicks: 1 },
  { date: '2013-02-11',
    cpc: 1.9625,
    cost: 7.85,
    clicks: 4 },
  { date: '2013-02-12',
    cpc: 2.39,
    cost: 7.17,
    clicks: 3 },
  { date: '2013-02-13',
    cpc: 2.53,
    cost: 2.53,
    clicks: 1 },
  { date: '2013-02-14',
    cpc: 1.955,
    cost: 3.91,
    clicks: 2 },
  { date: '2013-02-15',
    cpc: 1.4949999999999999,
    cost: 2.9899999999999998,
    clicks: 2 },
  { date: '2013-02-16',
    cpc: 2.315,
    cost: 4.63,
    clicks: 2 },
  { date: '2013-02-17',
    cpc: 1.21,
    cost: 2.42,
    clicks: 2 },
  { date: '2013-02-18',
    cpc: 1.92,
    cost: 9.6,
    clicks: 5 },
  { date: '2013-02-19',
    cpc: 1.9233333333333331,
    cost: 17.31,
    clicks: 9 },
  { date: '2013-02-20',
    cpc: 1.87,
    cost: 1.87,
    clicks: 1 },
  { date: '2013-02-21',
    cpc: 1.8566666666666667,
    cost: 5.57,
    clicks: 3 },
  { date: '2013-02-22',
    cpc: 1.8375,
    cost: 7.35,
    clicks: 4 },
  { date: '2013-02-23',
    cpc: 2.265,
    cost: 9.06,
    clicks: 4 },
  { date: '2013-02-09',
    cpc: 0.23,
    cost: 0.23,
    clicks: 1 },
  { date: '2013-02-25',
    cpc: 1.5066666666666668,
    cost: 4.5200000000000005,
    clicks: 3 },
  { date: '2013-02-26',
    cpc: 2.6,
    cost: 2.6,
    clicks: 1 },
  { date: '2013-02-27',
    cpc: 2.118,
    cost: 10.59,
    clicks: 5 },
  { date: '2013-02-28',
    cpc: 2.2425,
    cost: 8.97,
    clicks: 4 },
  { date: '2013-03-01',
    cpc: 1.83,
    cost: 3.66,
    clicks: 2 } ]