案例如下: 如果给出一组数据,需要统计连续数据的结果
比如给出战绩,需要统计他的连胜,连胜需要用同一个颜色标注且出现第一个记录最高值
const data = [{
id: 'a',
result: 'win',
}, {
id: 'b',
result: 'win',
}, {
id: 'c',
result: 'lose',
}, {
id: 'd',
result: 'win',
}, {
id: 'e',
result: 'win',
}, {
id: 'f',
result: 'win',
}, {
id: 'g',
result: 'win',
}, {
id: 'h',
result: 'win',
}]
const orderDatas = {};
const winOrder = {};
data.forEach((item) => {
if (!Object.keys(winOrder).length){
winOrder[item.id] = {
result: item.result,
wins: 1,
color: 'white'
}
orderDatas[item.id] = winOrder[item.id]
}
else {
let last = Object.keys(winOrder).pop();
if (winOrder[last].result == item.result) {
winOrder[last].wins++;
winOrder[last].color = 'blue'
orderDatas[item.id] = {
result: item.result,
color: 'blue'
}
} else {
winOrder[item.id] = {
result: item.result,
wins: 1,
color: 'white'
}
orderDatas[item.id] = winOrder[item.id]
}
}
})
console.log(orderDatas)
// 结果如下 一开始2连胜并且标识为蓝色
{
"a": {
"result": "win",
"wins": 2,
"color": "blue"
},
"b": {
"result": "win",
"color": "blue"
},
"c": {
"result": "lose",
"wins": 1,
"color": "white"
},
"d": {
"result": "win",
"wins": 5,
"color": "blue"
},
"e": {
"result": "win",
"color": "blue"
},
"f": {
"result": "win",
"color": "blue"
},
"g": {
"result": "win",
"color": "blue"
},
"h": {
"result": "win",
"color": "blue"
}
}