/* 按出价算排名 */
/*
// 排名列表
const rankList = [
{ rank: 1, price: 500, name: 'zhao' },
{ rank: 2, price: 500, name: 'qian' },
{ rank: 3, price: 400, name: 'sun' },
{ rank: 4, price: 400, name: 'li' },
{ rank: 5, price: 300, name: 'zhou' },
{ rank: 6, price: 290, name: 'wu' },
{ rank: 7, price: 100, name: 'zheng' },
]
*/
/*
const rankList = [
{ rank: 1, price: 290, name: 'wu' },
]
*/
/*
const rankList = []
*/
const rankList = [
{ rank: 1, price: 400, name: 'li' },
{ rank: 2, price: 400, name: 'zhou' },
]
if (rankList.length == 0) {
rankList.push({ rank: 1, price: 40 })
}
// 预期排名表(价格作为键名,排名信息作为值)
const expectRankMap = {}
for (let i = 0; i < rankList.length; i++) {
const { price, rank } = rankList[i]
// 出价500的名次不能被占用
if (price == 500) continue
// 只要比原出价多10元即可占据该名次(会出现价格相同名次不同的情况)
const existExpectRank = expectRankMap[price + 10]
// 出现相同价格排名不同的情况,以排名靠前的为准
if (existExpectRank == null || existExpectRank['rank'] > rank) {
expectRankMap[price + 10] = {
rank,
price: price + 10
}
}
}
// 预期排名表(价格排名表)
const expectRankList = Object.values(expectRankMap).sort((a, b) => a.rank - b.rank)
console.log(expectRankList)