老师,检查下作业,另外还有其他去重的方法么

老师,检查下作业,另外还有其他去重的方法么

 //用Set方法实现去重

        // const arr = [1, 1, '1', 17, true, true, false, false, 'true', 'a', {}, {}];

        // const s = [...new Set(arr)];

        // console.log(s);



        //用循环方法实现去重

        // const arr = [1, 1, '1', 17, true, true, false, false, 'true', 'a', {}, {}];

        // arr.forEach((i) => {

        //     if(arr[i] == arr[i+1]){

        //         arr.splice(i,1)

        //     }

        // })

        // console.log(arr);


        //用reduce方法实现去重

        let arr = [1, 1, '1', 17, true, true, false, false, 'true', 'a', {}, {}];

        let newArr = arr.reduce((prev, next) => {

            prev.indexOf(next) == -1 && prev.push(next);

            return prev;

        }, [])

        console.log(newArr);


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2022-04-28 14:46:44

同学你好,方式2“用循环方法实现去重”不正确:

https://img1.sycdn.imooc.com//climg/626a380f09db99b107730122.jpg

还有其他方式,同学可以看看问答区其他人的写法,不懂的,可以继续提问,老师再为你解答。

祝学习愉快!

  • 提问者 qq_慕神8318241 #1

    不正确  好呆老师给我说说杂修改啊

    2022-04-28 17:50:53
  • 好帮手慕久久 回复 提问者 qq_慕神8318241 #2

    因为老师觉得,第二种写法,没有改的必要,思路就不对。代码只能让前一项和后一项比较是否相等,如果第三项和第六项重复了呢,代码没法处理这种情况。所以让同学看看问答区,比如:

    https://img1.sycdn.imooc.com//climg/626a6493095235c807450412.jpg

    这里,这位同学的第三种写法是可以参考的,这种方法,是把不重复的元素放到新数组newArr2中:假设需要判断数字17,那么就看看newArr2中有没有17,如果没有,那就放到newArr2中。这样newArr2中都是不重复的。还有其他方案,同学可以自己尝试拓展,这样有利于培养独立解决问题的能力,毕竟开发中有太多这种需要自己思考的问题了,要一点点培养这种能力。

    再进一步讲,有疑问,还可以继续问,不用急,老师再针对性为你解答。不然可能说一堆内容,但对同学帮助并不大,就没必要了。

    2022-04-28 17:59:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师