入れ子になったオブジェクトの配列をソートする必要があります。私は次のコードを書いたが、何らかの理由で最初の要素を返す配列に配置してはいけない場合でも、常にそれを配置する。入れ子になったオブジェクトの配列を並べ替える
orderedArray =() => {
let sortedArray = products
if(this.state.interests.design && this.state.interests.code && this.state.interests.business)
sortedArray.sort((a,b)=> (b.scores.quality-a.scores.quality))
else if(this.state.interests.design && this.state.interests.code)
sortedArray.sort((a,b) => (b.scores.quality*b.scores.relevancy.code*b.scores.relevancy.design/2)-(a.scores.quality*a.scores.relevancy.code*a.scores.relevancy.design/2))
else if(this.state.interests.design && this.state.interests.business)
sortedArray.sort((a,b) => (b.scores.quality*b.scores.relevancy.business*b.scores.relevancy.design/2)-(a.scores.quality*a.scores.relevancy.business*a.scores.relevancy.design/2))
else if(this.state.interests.business && this.state.interests.code)
sortedArray.sort((a,b) => (b.scores.quality*b.scores.relevancy.business*b.scores.relevancy.code/2)-(a.scores.quality*a.scores.relevancy.business*a.scores.relevancy.code/2))
else if(this.state.interests.business)
sortedArray.sort((a,b)=> (b.scores.quality*b.scores.relevancy.business-a.scores.quality*a.scores.relevancy.busines))
else if(this.state.interests.code)
sortedArray.sort((a,b)=> (b.scores.quality*b.scores.relevancy.code-a.scores.quality*a.scores.relevancy.code))
else if(this.state.interests.design)
sortedArray.sort((a,b)=> (b.scores.quality*b.scores.relevancy.design-a.scores.quality*a.scores.relevancy.design))
console.log(JSON.stringify(sortedArray))
return sortedArray
}
アイデアは、彼らがデザイン、ビジネス、コードを選択した場合、その後結果の配列は、品質、品質と選択された変数のそうでなければ、私のミックスによってソートされなければならないということです。 this.state
一方
[
{
"name":"dasd",
"scores": {
"quality": 8,
"relevancy": {
"design": 3,
"code": 9,
"business": 5
}
},
{...}
}
{...}
]
である:
this.state = {
minutes: int,
interests: {
business: bool,
code: bool,
design: bool
}
}
リテラル表記で、同様のデータを追加してください。 –
「*最初の要素を常に返す配列*に配置する」とはどういう意味ですか? 'sort'は何も配置も削除もしません。 – Bergi
'sortedArray'は操作の開始時と同じ最初の要素を持っています – ocram