编辑代码

/* 按出价算排名 */

/*// 排名列表
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 myBidInfo = rankList[5]*/


// 排名列表
const rankList = [
    { rank: 1, price: 300, name: 'zhou' },
]
// 我的竞价信息
const myBidInfo = rankList[0]



// 预期排名表(价格作为键名,排名信息作为值)
const expectRankMap = {}


for (let i = 0; i < rankList.length; i++) {
    const { price, rank } = rankList[i]

    // 预期排名不能低于我当前的排名
    if (rank > myBidInfo.rank) continue

    // 出价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)