数组方法与字符串方法的练习

把字符串翻转 "kjihgfedcba"

str.split('')将字符转换成数组,再利用数组的reverse()方法将数组反转,join('')将数组转换成字符串

let str = "abcdefghijk";
console.log(str.split('').reverse().join(''));

分别统计出 及格和不及格的分数总和

let subjectList = [
    { score: 10 },
    { score: 20 },
    { score: 30 },
    { score: 40 },
    { score: 50 },
    { score: 60 },
    { score: 70 },
    { score: 80 },
    { score: 90 },
    { score: 100 },
    ];

利用数组的filter()方法将分数大于60的过滤出来,再利用reduce()进行累加从而得到总分

//及格
subjectList.filter(it=>it.score>=60).reduce((acc,it)=>acc+it.score,0);
//不及格
subjectList.filter(it=>it.score<60).reduce((acc,it)=>acc+it.score,0);

截取域名 http://www.baidu.com  不能使用slice

let href = "http://www.baidu.com?name=zs&age=18&sex=男";

利用split()将代码从?那里分割开,在取前一部分

href.split('?')[0]

获取问号后面的参数  name=zs&age=18&sex=男 并且转成对象  {name:'zs',age:18,sex:'男'}

let href = "http://www.baidu.com?name=zs&age=18&sex=男";

利用split()将代码从?那里分割开,在取后一部分,再利用reduce()方法将分割出来的那一部分依次放入acc中由于分割出来了的是['name=zs', 'age=18', 'sex=男']这样的数组,在放入acc的时候需要再次进行分割,每一项都要从=进行分割再存入

herf.split('?')[1].split('&').reduce((acc,it))=>(acc[it.split('=')]=it.split('=')[1],acc),{})

数字去重 [1,2,3,4,5,1,2,3]

利用reduce()方法对数组进行遍历,利用includes()方法来判断acc数组中是否有arr数组中的元素,如果有返回acc数组,没有就将这个元素与数组acc进行拼接

arr.reduce((acc,it)=>acc.includes(it)?acc:acc.concat(it),[])

统计数组中每个元素出现的次数  {1:2,2:2,3:2,4:1,5:1}

利用reduce()方法对数组进行遍历,判断数组acc中是否出现过arr数组中的元素,如果有,那么在上一次出现的次数上自增,没有这记为1,并返回acc数组

arr.reduce((acc,it)=>(acc[it]?acc[it]++:acc[it]=1,acc),{})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值