1.把字符串翻转 "kjihgfedcba"
完成这个题目首先得用字符串的split() 方法将字符串转换为数组,然后再用数组中的reverse()方法将数组的值反着写,最后再用数组的join()方法将数组转换为字符串。
// 1.把字符串翻转 "kjihgfedcba"
let str = "abcdefghijk";
console.log(str.split("").reverse().join(""));
2.分别统计出 及格和不及格的分数总和
let subjectList = [{
score: 10
}, {
score: 20
}, {
score: 30
}, {
score: 40
}, {
score: 50
}, {
score: 60
}, {
score: 70
}, {
score: 80
}, {
score: 90
}, {
score: 100
}, ];
完成这个题目首先定义一个变量,用这个变量把数组中的大于60的用filter()方法过滤出来返回一个数组来。然后用数组中的forEach()方法循环遍历这个数组,让这个数组中的分数求和。
//及格的总分数
let scoreList = subjectList.filter(item => item.score >= 60);
let allScore = 0
scoreList.forEach((item) => {
allScore = item.score + allScore
})
console.log(allScore);
//不及格的总分数
let scoreList2 = subjectList.filter(item => item.score < 60);
let allScore2 = 0
scoreList2.forEach((item) => {
allScore2 = item.score + allScore2
})
console.log(allScore2);
3. 截取域名 http://www.baidu.com 不能使用slice
let href = "http://www.baidu.com?name=zs&age=18&sex=男";
通过字符串中的split()方法,以字符串中的 "?" 为分割符,把字符串分成一个数组,取出索引为0的值。
console.log(href.split("?")[0]);
4. 获取问号后面的参数 name=zs&age=18&sex=男 并且转成对象 {name:'zs',age:18,sex:'男'}
let href = "http://www.baidu.com?name=zs&age=18&sex=男";
先用split()方法通过字符串里面的 "?"将字符串分割为数组,取后面的。然后在通过split()方法通过数组里面的"&"将数组分割。定义一个对象,最后通过数组里面的forEach()方法遍历分割的数组,将数组中的key和value添加到对象中。
const paramsStr = href.split('?')[1] // name=zs&age=18&sex=男
const paramsArr = paramsStr.split('&') // ['name=zs', 'age=18', 'sex=男']
// 第一种写法
let obj = {}
paramsArr.forEach(it => {
console.log(it.split('=')[0], it.split('=')[1]);
obj[it.split('=')[0]] = it.split('=')[1]
})
// console.log(obj);
5. 数字去重 [1,2,3,4,5]
let arr = [1, 2, 3, 4, 5, 1, 2, 3];
第一种写法:
先定义一个空数组,然后通过数组forEach方法遍历数组,里面添加一个if判断条件,(数组方法includes()判断数组中是否包含寻找的值,结果是布尔值)最后满足条件的用push()添加到空数组里面去。
第一种写法
let newArr = []
arr.forEach(it=>{
// includes(ture/false) find(值) findIndex(索引/-1)
if(!newArr.includes(it)){
newArr.push(it)
}
})
第二种写法:
首先使用reduce()方法遍历数组arr,对于数组中的每一项item,使用includes()方法检查acc数组是否包含item,如果包含则返回acc数组,否则返回acc和item拼接的数组。
// 第二种写法
const newArr = arr.reduce((acc, item) => acc.includes(item) ? acc : [...acc, item], [])
console.log(newArr, 'newArr');
6. 统计数组中每个元素出现的次数 {1:2,2:2,3:2,4:1,5:1}
第一种方法:
定义一个空对象obj1,用数组方法forEach()遍历数组,在里面添加if判断条件,当obj1包含it键,obj1[it]的值+1,没有则将obj1[it]的值定为1。
let obj1 = {}
arr.forEach(it => {
// if(obj1[it]) {
// obj1[it] ++
// }else {
// obj1[it] = 1
// }
obj1[it] ? obj1[it]++ : obj1[it] = 1
})
console.log(obj1);
第二种方法:
定义一个空对象obj1,用reduce()方法遍历数组,在里面添加if判断条件,当obj1包含it键,obj1[it]的值+1,没有则将obj1[it]的值定为1,最后返回一个acc。
let count = arr.reduce((acc, it) => {
if (acc[it]) {
acc[it] += 1;
} else {
acc[it] = 1;
}
return acc;
}, {});
console.log(count);