javascript - Safari 不像其他浏览器那样对对象数组进行排序

标签 javascript jquery arrays object safari

<分区>

var myArray = [{date:"2013.03.01"},{date:"2013.03.08"},{date:"2013.03.19"}];

我试过:

function(a,b){
  return b.date > a.date;
}

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

Chrome 和 Firefox 中的 console.log 为我提供了所需的输出:

"2013.03.19", "2013.03.08", "2013.03.01"

但是 Safari 给出了原始排序:

"2013.03.01", "2013.03.08", "2013.03.19"

为什么?

最佳答案

JavaScript 中的排序函数应该返回一个实数——不是真或假,也不是字符串或日期。该数字是正数、负数还是零都会影响排序结果。

试试这个排序函数(它也可以正确地按字母顺序对 任何 字符串进行排序):

myArray.sort(function(a,b){
  return (b.date > a.date) ? 1 : (b.date < a.date) ? -1 : 0;
});

关于javascript - Safari 不像其他浏览器那样对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507729/

相关文章:

arrays - 查找间隔为 X 的整数乘积并更新数组中位置 'i' 处的值以进行 N 次查询

c++ - 从 Fortran : How to deal with Dynamic memory allocation? 调用的子例程 C++

javascript - 如何将选择元素中的选项与子字符串匹配?

jQuery:循环插件和 100% 高度

javascript - 隐藏没有特定属性的 DOM 元素

php - 在 PHP 中循环 mysql_fetch_array

javascript - 使用 Bootstrap Modal 窗口作为 PartialView

javascript - 从 ztree 获取 JavaScript 中的选定值

javascript - 为什么图像不显示在 React Native 中?失败的 Prop 类型 : Invalid prop `source` supplied to `Image`

javascript - 主干事件总线和同一页面上的多个 View