Published
Edited
Aug 26, 2020
Insert cell
md`# javascript面试`
Insert cell
md`1. 查找字符串中连续重复出现次数最多的字符,并返回该子串`
Insert cell
str = 'aabbbbbcdahdddddddd';
Insert cell
md`正则表达式实现`
Insert cell
Insert cell
search(str);
Insert cell
md`使用循环`
Insert cell
searchFor = (data)=>{
let tmp='';// 记录连续字符串
const result = [];// 连续字符串组成的数组
[...data,''].reduce((pre,cur)=>{ // 末尾额外添加''是为了能访问到最后一个元素
if(pre !== cur){
result.push(tmp);
tmp = cur;
}else{
tmp+=cur; // 会访问第一个元素
}
return cur;
},data[0]) // 初始值data[0]是为了访问到第一个元素
return result.sort((a,b)=>{
return b.length - a.length;
})[0];;
};
Insert cell
searchFor(str);
Insert cell
md`2. 实现求千分位函数`
Insert cell
md`
/(\d)(?=(?:\d{3})+$)/g 讲解
- 实现3个数字一组,有>=1组: (\d{3}+)
- 以上面格式结尾 (\d{3}+)这样只会匹配最有一组3个数字,加上?:就能完整 ?:\d{3})+$
- 以上面为后缀:?= 实现:(\d)(?=(?:\d{3})+$)
`
Insert cell
function formatNumber(num) {
if ((num || '').toString().indexOf('.') !== -1) {
return num.toLocaleString();
}
const pattern = /(\d)(?=(?:\d{3})+$)/g;
return num ? (num || '').toString().replace(pattern, '$1,') : `${num}`;
}
Insert cell
formatNumber(123424325425);
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more