js 小练习
1.把字符串翻转 “kjihgfedcba”
let str = "abcdefghijk";
2.分别统计出 及格和不及格的分数总和
let subjectList = [
{ score: 10 },
{ score: 20 },
{ score: 30 },
{ score: 40 },
{ score: 50 },
{ score: 60 },
{ score: 70 },
{ score: 80 },
{ score: 90 },
{ score: 100 },
];
3. 截取域名 http://www.baidu.com 不能使用slice
let href = "http://www.baidu.com?name=zs&age=18&sex=男";
4. 获取问号后面的参数 name=zs&age=18&sex=男 并且转成对象 {name:‘zs’,age:18,sex:‘男’}
let href = "http://www.baidu.com?name=zs&age=18&sex=男";
5. 数字去重 [1,2,3,4,5]
let arr = [1, 2, 3, 4, 5, 1, 2, 3];
6. 统计数组中每个元素出现的次数 {1:2,2:2,3:2,4:1,5:1}
let arr = [1, 2, 3, 4, 5, 1, 2, 3];
解答
1题答案
const a = str.split("").reverse().join("")
console.log(a)
// kjihgfedcba
用split将字符串转为数组,再用reverse将数组反转,最后用join将数组转成字符串。
2题答案
const pass = subjectList.filter(item => item.score >= 60).reduce((acc, item) => acc += item.score, 0)
console.log(`及格` + pass); //及格400
const fail = subjectList.filter(item => item.score < 60).reduce((acc, item) => acc += item.score, 0)
console.log(`不及格` + fail); //不及格150
用filter过滤后用reduce进行累加
3题答案
console.log(href.split("?")[0]);
//http://www.baidu.com
用split以?分割成两个数组
4题答案
第一种写法
const paramsStr = href.split('?')[1] //name=zs&age=18&sex=男
const paramsArr = paramsStr.split('&')// ['name=zs', 'age=18', 'sex=男']
let obj={}
paramsArr.forEach(item =>{
console.log(item.split('=')[0],it.split('=')[1]);
obj[it.split('=')[0]] = it.split('=')[1]
})
console.log(obj); //{name: 'zs', age: '18', sex: '男'}
第二种写法
const res = href.split('?')[1].split('&').reduce((acc, it) => {
console.log(it);
acc[it.split('=')[0]] = it.split('=')[1]
return acc
}, {})
console.log(res);
第三种写法
const res = href.split('?')[1].split('&').reduce((acc,it)=> (acc[it.split('=')[0]] = it.split('=')[1],acc) ,{})
console.log(res);
5题答案
第一种写法
const newArr = arr.reduce((acc, item) => acc.includes(item) ? acc : [...acc, item], [])
console.log(newArr) //[1, 2, 3, 4, 5]
第二种写法
const newArr = arr.reduce((acc, item) => acc.includes(item) ? acc : [...acc, item], [])
console.log(newArr, 'newArr');
6题答案
第一种写法
let obj1 =[]
arr.forEarch(item=>{
if (obj1[item]){
obj1[item]++
}else[item]{
obj1[item]=1
}
})
console.log(obj1) //{1: 2, 2: 2, 3: 2, 4: 1, 5: 1}
第二种写法
let obj1 = {}
arr.forEach(it => {
obj1[it] ? obj1[it]++ : obj1[it] = 1
})
console.log(obj1);