JavaScript内置方法题目练习

本文介绍了JavaScript中字符串翻转的两种方法,数组的过滤、累加操作,以及如何统计分数、截取域名参数、数组去重和元素计数。通过reduce、filter和相关API的运用,展示了实用的编程技巧。
摘要由CSDN通过智能技术生成

1.把字符串翻转成 "kjihgfedcba"

    思路有两种:
    第一种:

先分割字符串,运用for循环倒序遍历,用一个空字符接收,最后输出

 let str = "abcdefghijk";
      let str0=""
          str= str.split("")
       for(let i=str.length-1;i>=0;i--){
          str0+=str[i];
       }
       console.log(str0);//kjihgfedcba
  第二种:

利用js的内置函数reverse()直接倒转字符串,用join讲每一个分开

 let str = "abcdefghijk";
      str= str.split("")
       let str1 = str.reverse().join(",");
           console.log(str1 );//k,j,i,h,g,f,e,d,c,b,a

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

 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()方法把每一项累加,不及格的同理

 const pass=subjectList.filter((it)=>it.score>=60).reduce((acc,it)=>acc+=it.score,0)
 console.log(pass);//400
 const noPass=subjectList.filter((it)=>it.score<60).reduce((acc,it)=>acc+=it.score,0)
 console.log(noPass);//150
      

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

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

用split()在?处分割,取它的前面半段,索引为0

 const domain = href.split('?')[0];
         console.log(domain);

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

 const domain1 = href.split('?')[1].split("&").map(it =>it.split('='));
        const domain2= Object.fromEntries(domain1)
         console.log(domain2);//{name: 'zs', age: '18', sex: '男'}

思路:

  1. 同样先以'?'分割,取第二个元素
  2. 再以'&'分割成数组
  3. 使用map()对每个元素进行'='分割,转换成键值对数组
  4. 将数组转换为对象,键为it[0],值为it[1]

利用map()和reduce()组合,可以更简洁地实现相同的效果。

5. 数组去重

let arr = [1, 2, 3, 4, 5, 1, 2, 3];

let uniq = arr.reduce((acc, it) => {
  if (!acc.includes(it)) {
    acc.push(it);
  }
  return acc;
}, []);
console.log(uniq ); //[1,2,3,4,5]

思路:

  1. 使用reduce()遍历数组
  2. 判断元素是否存在于累加器acc中,如果不存在就push进去

6. 统计数组中每个元素出现次数

let count = arr.reduce((acc, it) => {
  acc[it] = (acc[it] || 0) + 1;
  return acc;
}, {});
  console.log(count);
//{1: 2, 2: 2, 3: 2, 4: 1, 5: 1}

思路:

  1. 同样使用reduce()遍历
  2. 以元素为key,出现次数为value进行统计

总结

以上是几道JavaScript算法练习,分别运用了数组的reduce、filter等方法,并配合split、Object.fromEntries()等API进行处理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值