把字符串翻转 "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),{})