私はこの質問に対していくつかの答えを見つけましたが、何らかの理由でそれは私のために働いていません。JavaScriptのブール値属性を使用してオブジェクトの複雑な配列を並べ替える
私はブール値のプロパティ(すべてtrue
が最初に現れる必要がある)でソートする必要があるオブジェクトの大きな配列を持っています。私が見つける最も人気のある答えは次のとおりです。
let myList = [
{
thing: <div>Something</div>,
sortingAttribute: false
},
{
thing: <div>Something else</div>,
sortingAttribute: true
},
{
thing: <div>Whatever</div>,
sortingAttribute: true
}
.
.
.
]
myList.sort((x, y) => {
return (x.sortingAttribute === y.sortingAttribute) ? 0 : x ? -1 : 1
})
は、残念ながら、これは動作していないと私は無駄に、それのいくつかのバリエーションを作ることを試みてきました。
これに代わるものは、単純にやっている:
myList.sort((x, y) => {return x.sortingAttribute - y.sortingAttribute})
それも働いていませんが。私もアンダースコアのsortBy関数を使用しようとしましたが、何もしませんでした。
私はこれとは関係ないと思っていますが、並べ替えようとする前に別のリストに.map()
を入れて、今のところmyList
となっています。これはどういうわけか問題の原因になりますか?それ以外はかなりストレートです。ここで
は、フル機能である:サイズ5の配列のために、私たちは持っているだろうので.map()
から吐き出された正確順序を表示
getMyList (basicArray) {
let myList = basicArray.map((arr, key) => {
const sortingAttribute = key > 2 // just used for the example
// the real code would obviously generate a more random order of trues and falses
// do other stuff
return {
thing: (<div key={key}>{stuff}</div>),
sortingAttribute: sortingAttribute
}
})
myList.sort((x, y) => {
return (x.isQualified === y.isQualified) ? 0 : x ? -1 : 1
})
console.log('myList SORTED', myList)
}
現在:
偽、false、false、true、true
あなたは 'ます。myList = myList.sort((x、y)は=> {戻りx.sortingAttribute - y.sortingAttributeを})やっていますか'? –
@Keith that worked!ありがとう!あなたが望むなら、答えとしてそれをマークすることができます。 – theJuls
あなたの結果に基づいてarray.reverse()を呼び出すと、出力はtrue、false、false、falseとなります。 –