javascript

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

2019-05-22  本文已影响22人  90后徐先生

定义与用法:

          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

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

上一篇下一篇

猜你喜欢

热点阅读