Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 如何按两个字段(包括日期)对数组排序_Javascript_Sorting - Fatal编程技术网

Javascript 如何按两个字段(包括日期)对数组排序

Javascript 如何按两个字段(包括日期)对数组排序,javascript,sorting,Javascript,Sorting,我有一个对象数组,我想先按日期排序,然后按数值排序 let arr = [ {date: 2018-06-19 12:05:43.232Z, value: 3}, {date: 2018-06-20 12:05:43.232Z, value: 4}, {date: 2018-06-18 12:05:43.232Z, value: 2}, {date: 2018-06-20 12:05:43.232Z, value: 4}, {date: 2018-06-19 1

我有一个对象数组,我想先按日期排序,然后按数值排序

let arr = [  
  {date: 2018-06-19 12:05:43.232Z, value: 3},
  {date: 2018-06-20 12:05:43.232Z, value: 4},  
  {date: 2018-06-18 12:05:43.232Z, value: 2},  
  {date: 2018-06-20 12:05:43.232Z, value: 4}, 
  {date: 2018-06-19 12:05:43.232Z, value: 5},     
  {date: 2018-06-18 12:05:43.232Z, value: 5},  
  {date: 2018-06-20 12:05:43.232Z, value: 5},  
  {date: 2018-06-19 12:05:43.232Z, value: 4},  
]
我想按日期和值对每个索引进行排序,结果如下:

let arr = [
  {date: 2018-06-18 12:05:43.232Z, value: 2},
  {date: 2018-06-18 12:05:43.232Z, value: 5},

  {date: 2018-06-19 12:05:43.232Z, value: 3},
  {date: 2018-06-19 12:05:43.232Z, value: 4},
  {date: 2018-06-19 12:05:43.232Z, value: 5}, 

  {date: 2018-06-20 12:05:43.232Z, value: 3},
  {date: 2018-06-20 12:05:43.232Z, value: 4},     
  {date: 2018-06-20 12:05:43.232Z, value: 5},     
]

如何操作?

您可以使用Array.sort和
|

const res=arr.sort((a,b)=>Date.parse(a.Date)-Date.parse(b.Date)| a.value-b.value);
控制台日志(res)

设arr=[{
日期:“2018-06-19 12:05:43.232Z”,
价值:3
},
{
日期:“2018-06-20 12:05:43.232Z”,
价值:4
},
{
日期:“2018-06-18 12:05:43.232Z”,
价值:2
},
{
日期:“2018-06-20 12:05:43.232Z”,
价值:4
},
{
日期:“2018-06-19 12:05:43.232Z”,
价值:5
},
{
日期:“2018-06-18 12:05:43.232Z”,
价值:5
},
{
日期:“2018-06-20 12:05:43.232Z”,
价值:5
},
{
日期:“2018-06-19 12:05:43.232Z”,
价值:4
},
]

您可以将Array.sort与
|

const res=arr.sort((a,b)=>Date.parse(a.Date)-Date.parse(b.Date)| a.value-b.value);
控制台日志(res)

设arr=[{
日期:“2018-06-19 12:05:43.232Z”,
价值:3
},
{
日期:“2018-06-20 12:05:43.232Z”,
价值:4
},
{
日期:“2018-06-18 12:05:43.232Z”,
价值:2
},
{
日期:“2018-06-20 12:05:43.232Z”,
价值:4
},
{
日期:“2018-06-19 12:05:43.232Z”,
价值:5
},
{
日期:“2018-06-18 12:05:43.232Z”,
价值:5
},
{
日期:“2018-06-20 12:05:43.232Z”,
价值:5
},
{
日期:“2018-06-19 12:05:43.232Z”,
价值:4
},
]

您可以使用lodash库来完成。如果你查看功能文档,你会发现,这正是你所需要的

let arr = [  
  {"date": "2018-06-19 12:05:43.232Z", "value": 3},
  {"date": "2018-06-20 12:05:43.232Z", "value": 4},  
  {"date": "2018-06-18 12:05:43.232Z", "value": 2},  
  {"date": "2018-06-20 12:05:43.232Z", "value": 4}, 
  {"date": "2018-06-19 12:05:43.232Z", "value": 5},     
  {"date": "2018-06-18 12:05:43.232Z", "value": 5},  
  {"date": "2018-06-20 12:05:43.232Z", "value": 5},  
  {"date": "2018-06-19 12:05:43.232Z", "value": 4}  
]
在阵列上应用
\u orderBy
,如下所示:

_.orderBy(arr, ['date', 'value'], ['asc', 'asc']);
你会得到你想要的结果

检查以下示例:

让arr=[
{“日期”:“2018-06-19 12:05:43.232Z”,“值”:3},
{“日期”:“2018-06-20 12:05:43.232Z”,“值”:4},
{“日期”:“2018-06-18 12:05:43.232Z”,“值”:2},
{“日期”:“2018-06-20 12:05:43.232Z”,“值”:4},
{“日期”:“2018-06-19 12:05:43.232Z”,“值”:5},
{“日期”:“2018-06-18 12:05:43.232Z”,“值”:5},
{“日期”:“2018-06-20 12:05:43.232Z”,“值”:5},
{“日期”:“2018-06-19 12:05:43.232Z”,“值”:4}
]
console.log(u.orderBy(arr,['date','value',['asc','asc']))

您可以使用lodash库来完成。如果你查看功能文档,你会发现,这正是你所需要的

let arr = [  
  {"date": "2018-06-19 12:05:43.232Z", "value": 3},
  {"date": "2018-06-20 12:05:43.232Z", "value": 4},  
  {"date": "2018-06-18 12:05:43.232Z", "value": 2},  
  {"date": "2018-06-20 12:05:43.232Z", "value": 4}, 
  {"date": "2018-06-19 12:05:43.232Z", "value": 5},     
  {"date": "2018-06-18 12:05:43.232Z", "value": 5},  
  {"date": "2018-06-20 12:05:43.232Z", "value": 5},  
  {"date": "2018-06-19 12:05:43.232Z", "value": 4}  
]
在阵列上应用
\u orderBy
,如下所示:

_.orderBy(arr, ['date', 'value'], ['asc', 'asc']);
你会得到你想要的结果

检查以下示例:

让arr=[
{“日期”:“2018-06-19 12:05:43.232Z”,“值”:3},
{“日期”:“2018-06-20 12:05:43.232Z”,“值”:4},
{“日期”:“2018-06-18 12:05:43.232Z”,“值”:2},
{“日期”:“2018-06-20 12:05:43.232Z”,“值”:4},
{“日期”:“2018-06-19 12:05:43.232Z”,“值”:5},
{“日期”:“2018-06-18 12:05:43.232Z”,“值”:5},
{“日期”:“2018-06-20 12:05:43.232Z”,“值”:5},
{“日期”:“2018-06-19 12:05:43.232Z”,“值”:4}
]
console.log(u.orderBy(arr,['date','value',['asc','asc']))

通过谷歌搜索
js数组排序
。不是同一个问题。我希望按两个字段进行排序。这是我的问题。我可以按日期或值排序,但我希望在回调中同时按日期和值排序,您可以比较9000多个字段。不是同一个问题。我希望按两个字段进行排序。这是我的问题。我可以按日期或值排序,但我希望在回调中按两者进行排序,您可以比较9000多个字段。非常感谢您做了这么多完美的工作!欢迎@obiwankenoobithank@obiwankenoobithank你做了这么多完美的工作!欢迎你@obiwankenoobi