为了账号安全,请及时绑定邮箱和手机立即绑定

关于几道有趣的js题目的解答

标签:
JavaScript
1. 计算仅包含数字的数组中元素重复次数
解答
function countRepeat (arr) {
     return arr.reduce((count,val) => ((count[val] = (count[val]0)+1),count),{});
}
调用结果
countRepeat([2, 9, 8, 4, 5, 3, 4, 8, 9, 9, 1, 0, 2, 1])
{
  '0': 1,
  '1': 2,
  '2': 2,
  '3': 1,
  '4': 2,
  '5': 1,
  '8': 2,
  '9': 3
} 
2. 驼峰转换函数

在代码的世界里,标识符中不能有空格,
但有时一个变量必须由两个或更多个单词来表达,如count repeatget own poperty descriptor等。
这时候就必须把他们写成第一个单词全小写,第二个以及后面的单词,除了首字母全小写的形式(即驼峰),
countRepeatgetOwnPropertyDescriptor
编写一个函数来实现这个功能

解答
function camelCase (str) {
     let strArr = str.replace(/\s/g,'-').replace(/-+/g,'-').split('-');
     let head = strArr.shift();
     let newArr = [];
     strArr.forEach(i => {
         let h = i[0].toUpperCase();
         newWord = h + i.slice(1,i.length).toLowerCase();
                        newArr.push(newWord);
     });
     newArr.unshift(head.toLowerCase());
     return newArr.toString().replace(/,/g,'');
}
调用样例
camelCase('hey guys')           // 'heyGuys'
camelCase('HELLO-world')        // 'helloWorld'
camelCase('oh  mY---gOd')       // 'ohMyGod'
3. 寻找字符串中第一个未重复的字符

寻找字符串中第一个未重复的字符,如果没有找到,则返回一个空字符串(''

解答
function firstNonRepeat (str) {
  return str.split('').find((e,i,a)=>(a.indexOf(e) == i && a.indexOf(e, i + 1) == -1)));
}
调用样例
firstNonRepeat('aaabccc')     // 'b'
firstNonRepeat('6666666')     // ''
4. 展平数组

数组中可以嵌套数组,要嵌套多少层都可以,比如[1, 2, [[3], 4]]
这样看起来很不爽,所以我们要把它展开,只留下一层数组: [1, 2, 3, 4]

解答
function flatten (arr) {
     return arr.reduce((plane, toBeFlatten) => (plane.concat(Array.isArray(toBeFlatten) ? flatten(toBeFlatten) : toBeFlatten)), []);
}
调用样例
flatten([1, 2, 3])                // [1, 2, 3]
flatten([1, 2, [3]])              // [1, 2, 3]
flatten([1, 2, [[3], 4]])         // [1, 2, 3, 4]
flatten([1, [2, [[3], [4]]]])     // [1, 2, 3, 4]
测试网站
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消