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中对该数组进行排序?_Javascript_Arrays_Sorting_Object - Fatal编程技术网

如何在JavaScript中对该数组进行排序?

如何在JavaScript中对该数组进行排序?,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,如何对该数组进行排序 [ {id : 1, start : 60, end : 120}, {id : 2, start : 100, end : 240}, {id : 3, start : 700, end : 720} ] 更新: 所以,如果我的数组看起来像这样,我可以根据起始值对它进行排序吗 [{ 1:{start : 60, end : 120}, 2:{start : 100, end : 240}, 3:{start : 700, end : 720} }

如何对该数组进行排序

[
  {id : 1, start : 60, end : 120},
  {id : 2, start : 100, end : 240},
  {id : 3, start : 700, end : 720}
]
更新: 所以,如果我的数组看起来像这样,我可以根据起始值对它进行排序吗

[{
  1:{start : 60, end : 120},
  2:{start : 100, end : 240},
  3:{start : 700, end : 720}
}]

这里有一个对象数组。您必须指定如何对其进行排序

无论如何,您可以使用
排序
方法:

var data = [{id : 1, start : 60, end : 120}, {id : 2, start : 100, end : 240},{id : 3, start : 700, end : 720}];

function sortByStart(a, b){
  return a.start - b.start;
}

data.sort(sortByStart);

您可能需要一种方法来对可能 具有相同的起始值:

    [
      {id : 1, start : 60, end : 120},
      {id : 2, start : 100, end : 240},
      {id : 3, start : 700, end : 720}
    ]

A.sort(function(a, b){
    return a.start-b.start || a.end-b.end || a.id-b.id;
});

实际上,现在您已经从一个伪数组对象获得了数组。但您可以将该对象转换为真实数组,对其进行排序,然后再转换回:

var originalArray = [{
    1:{start : 60, end : 120},
    2:{start : 700, end : 720},
    3:{start : 100, end : 240}
}];
var pseudoArray = originalArray[0];
var arrayToSort = [];
for (var key in pseudoArray) {
    arrayToSort.push(pseudoArray[key]);
}
arrayToSort.sort(function(left, right) {
    return left.start - right.start || left.end - right.end;
});
var resultPseudoArray = {};
for (var i = 0; i < arrayToSort.length; i++) {
    resultPseudoArray[i + 1] = arrayToSort[i];
}
var resultArray = [resultPseudoArray];
var originalArray=[{
1:{开始:60,结束:120},
2:{开始:700,结束:720},
3:{开始:100,结束:240}
}];
var伪数组=原始数组[0];
var arrayToSort=[];
for(伪数组中的var密钥){
push(伪数组[key]);
}
排序(函数(左、右){
返回left.start-right.start | | left.end-right.end;
});
var resultPseudoArray={};
对于(变量i=0;i
您甚至不需要命名比较函数。如果不需要其他地方的比较,可以将其用作匿名函数。data.sort(函数(a,b){returna.id-b.id;};是的,绝对是这样,但我总是尽量避免匿名函数,因为它们使代码更难阅读-你知道,程序员花更多的时间阅读代码而不是编写代码:)