美文网首页javascript
JS数组方法every,some,map区别

JS数组方法every,some,map区别

作者: 90后徐先生 | 来源:发表于2019-05-22 14:29 被阅读22次

    定义与用法:

              every()方法用于检测数组中所有元素是否都符合指定条件,若符合返回true,否则返回false;

              some()方法用于检测数组中的元素是否有满足指定条件的,若满足返回true,否则返回false;

        every()

    1.语法:array.every(function(item,index,array){

                   //item:当前元素的值;

                        //index:当前元素的索引;

                        // array:当前元素的数组对象;

                    })

    2.every()方法使用指定函数检测数组中的所有元素;

    如果数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测。如果所有 元素都满足条件,则返回true;

    3.注意:every()不会对空数组进行检测;

                    every()不会改变原来的数组


        some()

     1.  语法:array.some(function(item,index,array){

                        //item:当前元素的值;

                        //index:当前元素的索引;

                        // array:当前元素的数组对象;

                    })

    2. some()方法会依次执行数组的每个元素;

    如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false

    3.注意:some()不会对空数组进行检测;

                     some()不会改变原始数组;

        map()

    1.语法:array.map(function(value, index, array))

    map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

    map() 方法按照原始数组元素顺序依次处理元素。

    注意: map() 不会对空数组进行检测。

    注意: map() 不会改变原始数组。

    2.调用map数组,不同的是:

                如果给定处理函数的表达式是运算表达式,它返回的是每一项运算后的结果的数组

                如果给定的处理函数的表达式是逻辑判断,它返回的是布尔值组成的数组

     但是我发现,some与map 都不能对空数组进行数据检测,我就试了一下

        发现some为false,但是map就不一样了

        map打印出的是空数据

        感觉哪里怪怪的,事情好像并不是那么简单的样子。所以仔细思考一下,得出一个简单的结论:

            map是可以遍历空数组的。但是 map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。 也就是会以arr为原数组生成新数组返回。这个时候 打印 arr == arrRes 应该是 false

        其实就是涉及到,栈内存,堆内存的问题。因为 arr。map返回的是一个新数组 在堆空间开辟了一块空间 产生了一个新的地址值arrRes 指向的就是这个新的地址值 所以 arr == arrRes 或 arr === arrRes 就是false

    以上个人总结,有不对的地方请指正。

    相关文章

      网友评论

        本文标题:JS数组方法every,some,map区别

        本文链接:https://www.haomeiwen.com/subject/cvgqaqtx.html