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);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值