优化快速下注 保证至少有5个按钮
This commit is contained in:
@@ -490,17 +490,39 @@
|
|||||||
const min = this.minBet || 100;
|
const min = this.minBet || 100;
|
||||||
const max = this.maxBet || 50000;
|
const max = this.maxBet || 50000;
|
||||||
|
|
||||||
// 生成阶梯:最小值, 10倍, 100倍, 500倍, 最大值
|
// 预设候选倍数,尽量生成美观的数字
|
||||||
// 并确保每个阶梯都不超过最大值,最后去重排序取前5个
|
const candidates = [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000];
|
||||||
let steps = [
|
let steps = candidates.map(m => min * m).filter(v => v >= min && v < max);
|
||||||
min,
|
steps.push(max);
|
||||||
min * 10,
|
steps = [...new Set(steps)].sort((a, b) => a - b);
|
||||||
min * 100,
|
|
||||||
min * 500,
|
if (steps.length >= 5) {
|
||||||
max
|
// 如果候选值足够多,均匀采样,确保首尾是最小值和最大值
|
||||||
].map(v => Math.min(v, max));
|
return [
|
||||||
|
steps[0],
|
||||||
return [...new Set(steps)].sort((a, b) => a - b).slice(0, 5);
|
steps[Math.floor((steps.length - 1) * 0.25)],
|
||||||
|
steps[Math.floor((steps.length - 1) * 0.5)],
|
||||||
|
steps[Math.floor((steps.length - 1) * 0.75)],
|
||||||
|
steps[steps.length - 1]
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
// 如果候选值不足5个(范围太小),通过线性插值补齐
|
||||||
|
while (steps.length < 5) {
|
||||||
|
let maxGap = 0;
|
||||||
|
let insertIdx = -1;
|
||||||
|
for (let i = 0; i < steps.length - 1; i++) {
|
||||||
|
if (steps[i+1] - steps[i] > maxGap) {
|
||||||
|
maxGap = steps[i+1] - steps[i];
|
||||||
|
insertIdx = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (insertIdx === -1) break;
|
||||||
|
let newVal = Math.floor((steps[insertIdx] + steps[insertIdx+1]) / 2);
|
||||||
|
if (newVal > 100) newVal = Math.floor(newVal / 10) * 10; // 简单取整
|
||||||
|
steps.splice(insertIdx + 1, 0, newVal);
|
||||||
|
}
|
||||||
|
return steps;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -435,16 +435,39 @@
|
|||||||
const min = this.minBet || 100;
|
const min = this.minBet || 100;
|
||||||
const max = this.maxBet || 100000;
|
const max = this.maxBet || 100000;
|
||||||
|
|
||||||
// 生成阶梯:最小值, 10倍, 100倍, 500倍, 最大值
|
// 预设候选倍数,尽量生成美观的数字
|
||||||
let steps = [
|
const candidates = [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000];
|
||||||
min,
|
let steps = candidates.map(m => min * m).filter(v => v >= min && v < max);
|
||||||
min * 10,
|
steps.push(max);
|
||||||
min * 100,
|
steps = [...new Set(steps)].sort((a, b) => a - b);
|
||||||
min * 500,
|
|
||||||
max
|
if (steps.length >= 5) {
|
||||||
].map(v => Math.min(v, max));
|
// 如果候选值足够多,均匀采样,确保首尾是最小值和最大值
|
||||||
|
return [
|
||||||
return [...new Set(steps)].sort((a, b) => a - b).slice(0, 5);
|
steps[0],
|
||||||
|
steps[Math.floor((steps.length - 1) * 0.25)],
|
||||||
|
steps[Math.floor((steps.length - 1) * 0.5)],
|
||||||
|
steps[Math.floor((steps.length - 1) * 0.75)],
|
||||||
|
steps[steps.length - 1]
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
// 如果候选值不足5个(范围太小),通过线性插值补齐
|
||||||
|
while (steps.length < 5) {
|
||||||
|
let maxGap = 0;
|
||||||
|
let insertIdx = -1;
|
||||||
|
for (let i = 0; i < steps.length - 1; i++) {
|
||||||
|
if (steps[i+1] - steps[i] > maxGap) {
|
||||||
|
maxGap = steps[i+1] - steps[i];
|
||||||
|
insertIdx = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (insertIdx === -1) break;
|
||||||
|
let newVal = Math.floor((steps[insertIdx] + steps[insertIdx+1]) / 2);
|
||||||
|
if (newVal > 100) newVal = Math.floor(newVal / 10) * 10;
|
||||||
|
steps.splice(insertIdx + 1, 0, newVal);
|
||||||
|
}
|
||||||
|
return steps;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user