【发布时间】:2020-02-28 12:16:34
【问题描述】:
我正在对一个对象数组进行排序,排序函数似乎对数组没有任何结果。所以它返回相同的列表。
我将数组和排序函数导出到窗口并手动执行它们,然后得到的数组排序良好。
import { connect } from "react-redux"
import DestinationsGallery from "./destinationsGallery"
import DestinationFilter from "./functions/filter"
import WindPoint from "./functions/windPoint"
import {sortCosts,sortWind, sortName} from "./functions/sort"
const getSelectedDestinations = ( catalog, filter ) => {
let paramCatalog = null
let paramSorted = null
if (catalog) {
paramCatalog = catalog
.map(spot => WindPoint(spot,filter))
.filter( item => DestinationFilter( item,filter ) )
.sort( ( a,b ) => a.name.localeCompare( b.name ) )
window.catalog = paramCatalog
window.sortCosts = sortCosts
window.sortWind = sortWind
window.sortName = sortName
console.log("Unsorted",paramCatalog)
paramSorted = paramCatalog.sort( sortName )
console.log( "Sorted name",paraSorted, paramCatalog.sort( sortName ) )
let paraSorted = paramCatalog.sort( sortWind )
console.log( "Sorted wind",paraSorted )
}
return paramSorted
}
export default connect( store => ({
destinations: getSelectedDestinations(store.kiteSpots.catalog.list, store.kiteSpots.filter),
filter: store.kiteSpots.filter,
}),null)(DestinationsGallery)
我的排序功能是:
export const sortCosts = ( a,b ) => ( a.data.CostsRank > b.data.CostsRank? 1 : -1 )
export const sortWind = ( a,b ) => ( a.windPoint.probability > b.windPoint.probability ? 1 : -1 )
export const sortName = ( a,b ) => { return a.name > b.name ? 1 : -1 }
所以我只想输出列表是正确的
【问题讨论】:
-
@NinaScholz 他们没有返回布尔值
-
@PatrickRoberts 是的。但它省略了一个值 - 在这种情况下,相同的值为零。所以它也适用于此。 (但这可能不是问题的解决方案。)
-
如果它们相等,则它们是否被交换都没有关系。返回布尔值的问题是函数永远不能指示交换。
-
实际上该函数在浏览器窗口上运行,但我不明白为什么在我的代码中它们不会产生排序结果。
标签: javascript arrays reactjs sorting gatsby