map,reduce,filter,sort和其他

时间:2022-07-04 18:28:18
        'use strict';
        //map()方法定义在array上,可接收一个函数
        function pow(x) {
            return x * x;
        }
        var arry = [1, 2, 3, 4, 5];
        console.log(arry.map(pow));//[1,4,9,16,25] 
       'use strict';
        var arry = [1, 2, 3, 4, 5];
        function sum(x, y) {
            return x + y;
        }
        //reduce的函数必须有2个参数
        console.log(arry.reduce(sum));//15
        var result = arry.reduce(function (x, y) {
            return x + y;
        });
        console.log("result=" + result);//result=15

 

       'use strict';
        var arry = [1, 2, 3, 4, 5];
        //filter用于过滤某些元素
        var newArray = arry.filter(function (element, index, self) {
            return element % 2 == 0;
        });
        console.log("newArray=" + newArray);//newArray=2,4 

-------------------------------------------------------------------------------------------------------------------------------

 javascript中的sort是按ASCII进行排序的:所以直接使用sort经常会出现意想不到的结果

 ['Google', 'Apple', 'Microsoft'].sort(); // ['Apple', 'Google', 'Microsoft'];
 ['Google', 'apple', 'Microsoft'].sort(); // ['Google', 'Microsoft", 'apple']
 [10, 20, 1, 2].sort(); // [1, 10, 2, 20]

sort也是高阶函数:

       'use strict';
        var arr = [10, 20, 1, 2];
        arr.sort(function (x, y) {
            if (x > y) {
                return 1;
            }
            if (x < y) {
                return -1;
            }
            return 0;
        });
        console.log("排序" + arr);//排序1,2,10,20
        //如果是字符串

        var arr2 = ['Google', 'apple', 'Microsoft'];
        arr2.sort(function (x, y) {
            x = x.toUpperCase();
            y = y.toUpperCase();
            if (x > y) {
                return 1;
            }
            if (x < y) {
                return -1;
            }
            return 0;
        });
        console.log("字符串sort=" + arr2);//字符串sort=apple,Google,Microsoft

 --------------------------------------------------------------------------------

        'use strict';
        var arr = [1, 2, 3];
        //every()方法可以判断数组的所有元素是否满足测试条件
        console.log(arr.every(function (element, index, self) {
            return element > 0;
        }));//true (每个元素都>0)
       'use strict';
        var arr = [1, 2, 3, -5];
        //find()方法用于查找符合条件的第一个元素,如果找到了,返回这个元素,否则,返回undefined:
        console.log(arr.find(function (element, index, self) {
            return element > 0;
        }));//1(查找第一个>0的元素)

 findIndex()和find()类似,也是查找符合条件的第一个元素,不同之处在于findIndex()会返回这个元素的索引,如果没有找到,返回-1:

 --------------------------------------------------------------------------------

       'use strict';
        var arr = [1, 2, 3, -5];
        //forEach()和map()类似,它也把每个元素依次作用于传入的函数,但不会返回新的数组。forEach()常用于遍历数组,因此,传入的函数不需要返回值:
        arr.forEach(function (element, index) {
            console.log("index=" + index + " 值=" + element);
        });
        /*
        index=0 值=1
        index=1 值=2
        index=2 值=3
        index=3 值=-5*/