1-14 each方法的使用在控制台中打印的为什么都一样?

1-14 each方法的使用在控制台中打印的为什么都一样?

each遍历的时候想在控制台中打印出所有的class该怎么做,为什么不论function方法中写什么,都是一样的控制台结果,

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

</head>

<body>


<h1></h1>


<ul>

    <li class="item1">item1</li>

    <li class="item2">item2</li>

    <li class="item3">item3</li>

    <li class="item4">item4</li>

    <li class="item5">item5</li>

    <li class="item6">item6</li>

    <li class="item7">item7</li>

    <li class="item8">item8</li>

    <li class="item9">item9</li>

</ul>


<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>

<script>

    $(function () {


        console.log(($('li').each(function(index,element){

         return this.className;

        


        })))

         


    });

</script>

</body>

</html>

这个的打印结果不应该是所有的class的集合吗,这个用map函数就可以做到...

又例如


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

</head>

<body>


<h1></h1>


<ul>

    <li class="item1">item1</li>

    <li class="item2">item2</li>

    <li class="item3">item3</li>

    <li class="item4">item4</li>

    <li class="item5">item5</li>

    <li class="item6">item6</li>

    <li class="item7">item7</li>

    <li class="item8">item8</li>

    <li class="item9">item9</li>

</ul>


<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>

<script>

    $(function () {


        console.log($('li').each(function(index,element){

         if(this.innerText==="item3"){

         return false;

         

        }

        }))


    });

</script>

</body>

</html>

 想让控制台打印出前两个li,在第三个的时候就退出循环,为什么控制台还是会打印完整的li集合,应该怎样做才能用each数组遍历部分呢...

正在回答

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

1回答

1、each和map函数虽然都是循环遍历,但是是有区别的,each返回的是原来的数组,并不会新创建一个数组。而map方法会返回一个新的数组。所以你使用map方法打印出来的就是class的名。

2、可以在each外面,自己定义一个空数组,然后把循环的内容放进数组,如果只是要前两个,判断到item2就可以了,因为它是先循环遍历到item2,然后再判断的,参考测试代码:

<script>
    $(function() {

        var arr = [];

        $('li').each(function(index, element) {
            arr.push($(this));
            $(this).css({ background: 'red' });

            if (this.innerText === "item2") {

                return false;

            }

        })
        console.log(arr);
    });
    </script>

祝学习愉快~~

  • 慕斯卡6262195 提问者 #1
    就是说each这个方法不论进行什么操作,返回的都会是原数组是吗,如果我想对于each的返回值进行操作还要在加上一个新的接受新的集合的数组吗? 但是each这个方法会显示出来OCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1></h1> <ul> <li class="item1">item1</li> <li class="item2">item2</li> <li class="item3">item3</li> <li class="item4">item4</li> <li class="item5">item5</li> <li class="item6">item6</li> <li class="item7">item7</li> <li class="item8">item8</li> <li class="item9">item9</li> </ul> <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script> <script> $(function () { console.log($('li').each(function(index,element){ if(this.className==="item4"){ return true; }else{ this.title=this.innerText; } })) }); </script> </body> </html> 比如像这个class=“item4”的这个li就没有被添加title,他的输出结果和操作结果不是问题,或者说他的返回值没影响他的操作?
    2018-04-25 15:12:53
  • 好帮手慕星星 回复 提问者 慕斯卡6262195 #2
    是的,each的返回值不受里面操作的影响。
    2018-04-25 16:00:50
  • 慕斯卡6262195 提问者 #3
    非常感谢!
    2018-04-25 16:02:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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