0
我需要對嵌套對象數組進行排序。我寫了下面的代碼,但由於某些原因,它將第一個元素始終放在返回的數組中,即使它不應該。對嵌套對象排序數組
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
}
的想法是,如果他們選擇的設計,商業和代碼,然後將生成的數組應以質量進行排序,否則我的質量和所選擇的變量的混合。下面是數據:
[
{
"name":"dasd",
"scores": {
"quality": 8,
"relevancy": {
"design": 3,
"code": 9,
"business": 5
}
},
{...}
}
{...}
]
鑑於this.state
是:
this.state = {
minutes: int,
interests: {
business: bool,
code: bool,
design: bool
}
}
請加數據,以及在文字符號。 –
你是什麼意思的「*第一個元素總是在返回數組*」? 'sort'不會放置或移除任何東西。 – Bergi
'sortedArray'具有與在操作開始時相同的第一個元素 – ocram