编辑代码

/* 按出价算排名 */

/*
// 排名列表
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)