关于数组和字符串的练习题

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值