问题
您好,感谢所有愿意帮助我的人,我在js中对对象数组进行排序时遇到了问题。
在此组件中,我在this.state
,id
,hours
和day
的{{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
答案 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});
}