习题详解错题深究

1.把字符串翻转 “kjihgfedcba”

在这里插入图片描述
思路:
先将字符串用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 },
      ];

思路:
先将及格和不及格的过滤出来,然后进行计算

let jige = subjectList.filter((item) => item.score >= 60)

不及格的也按同类型过滤

计算

const passSum =  subjectList.filter(item=> item.score>60).reduce((acc,item)=> acc+=item.score ,0)
const failSum = subjectList.filter(item=> item.score<60).reduce((acc,item)=> acc+=item.score ,0)

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

在这里插入图片描述
思路:
回想学过的知识split分割,直接从?分割取前边简单粗暴,当然不止这一种方法。

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

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

思路:
和三题一样先分割第一次这次选后半段,之后进行第二次分割‘&’之后循环再用‘=分割’。
方法1

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]); })

5.数字去重

题目

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

老规矩解题思路:
我们使用 filter() 方法遍历数组,并在回调函数中使用 indexOf() 方法来判断当前元素在数组中的第一个索引位置是否与当前索引位置相同。如果相同,说明是第一次出现的元素,保留在结果数组中,否则过滤掉。这种方法会保留元素的顺序。

 const res = arr.filter((item,index,a) =>{
      return a.indexOf(item) === index;});
         console.log(res);

第二方法
先定义一个空的数组,之后用foreach来循环.includes来判断是否存在

      const  newArr = arr.reduce((acc,item)=> acc.includes(item)? acc :  [...acc,item] ,[])

      console.log(newArr,'newArr');

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

思路:
同样使用循环遍历,在循环中判断元素出现的次数,
初始值是0,先把数值传到空数组有相同的元素值加一。

  let arr1 = { }
      arr.forEach(it =>
        arr1[it]? arr1[it] ++ : arr1[it] = 1
      })
      console.log(arr1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值