Arrays.sort比较器问题

时间:2018-07-26 22:59:06

标签: javascript arrays react-native

问题

您好,感谢所有愿意帮助我的人,我在js中对对象数组进行排序时遇到了问题。

在此组件中,我在this.stateidhoursday的{​​{1}}中保留一个数组。

我的问题是,当我尝试对active数组进行排序时,该函数将不会按照我的逻辑进行排序,并且对这个比较器的理解也不会,即使排序表达式为object.hours,该数组也保持不变。 / p>

可以在false声明中找到。

预期行为

sortHoursByTime然后对if (obj1.toTime < obj2.fromTime)首先排列的数组进行排序。

代码:

obj1

环境

  

react-native -v:“ 0.54.2”

     

节点-v:v9.8.0

     

npm -v:5.6.0

     

yarn --version:1.5.1

     

目标平台:iOS

     

操作系统:OSX

1 个答案:

答案 0 :(得分:2)

在JavaScript中将Array.sort与自定义排序功能一起使用时,您需要返回的-1少于0,等于的返回1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

这应该可以解决您的问题。

sortHoursByTime(day){
    let sortedDays = day;
    // Switch from < to -
    sortedDays.hours.sort((obj1,obj2) => obj1.fromTime - obj2.toTime); 
    this.setState({workingDays: sortedDays});
}