喊7的次数重排js实现
实现喊7次数重排的JavaScript方法
需要统计数字序列中数字7出现的次数,并按出现次数从高到低对数字进行重排。以下是具体实现步骤:
统计数字7出现次数
function countSevens(arr) {
return arr.reduce((acc, num) => {
const str = num.toString();
const count = (str.match(/7/g) || []).length;
return acc + count;
}, 0);
}
创建数字到7出现次数的映射

function createCountMap(arr) {
const map = new Map();
arr.forEach(num => {
const str = num.toString();
const count = (str.match(/7/g) || []).length;
map.set(num, count);
});
return map;
}
按7出现次数排序
function sortBySevens(arr) {
const countMap = createCountMap(arr);
return [...arr].sort((a, b) => {
const countA = countMap.get(a);
const countB = countMap.get(b);
return countB - countA || a - b;
});
}
使用示例

const numbers = [17, 27, 37, 77, 70, 7, 123];
const sorted = sortBySevens(numbers);
console.log(sorted); // [77, 7, 70, 17, 27, 37, 123]
处理特殊情况 对于数字0或负数的情况,可以添加验证:
function validateInput(arr) {
return arr.every(num => Number.isInteger(num) && num >= 0);
}
性能优化 对于大型数组,可以考虑使用更高效的统计方法:
function optimizedCount(str) {
let count = 0;
for (let i = 0; i < str.length; i++) {
if (str[i] === '7') count++;
}
return count;
}
这些方法组合起来可以有效地实现数字按包含7的次数进行重排的功能,同时考虑了各种边界情况和性能优化。






