数组API之数组操作(filter、map、some、every、sort)

var arr = [1,2,3,4];
 
forEach
arr.forEach((item,index,arr) => {
    console.log(item) //结果为1,2,3,4
})

filter

//filter过滤掉数组中不满足条件的值,返回一个新数组,不改变原数组的值。
var c=arr.filter((item,index,arr) => {
return item > 2 //新数组为[3,4] 过滤满足条件的项返回新数组
})

map

var d=arr.map((item,index,arr)=>{
return item*3;//遍历每一项进行操作后返回
})

some 

var e=arr.some((item,index,arr)=>{
return item>3;//只要满足就返回true,终止循环
});

every 

var f=arr.every((item,index,arr) => {
return item > 0 //结果为false
})
//遍历数组每一项,每一项返回true,则最终结果为true。当任何一项返回false时,停止遍历,返回false。不改变原数组
console.log(c,d,e);

sort 

对于两个元素x和y,如果认为 x < y,则返回-1,如果认为 x == y,则返回0,如果认为 x > y,则返回1
// 看上去正常的结果: ['Google', 'Apple', 'Microsoft'].sort();
// ['Apple', 'Google', 'Microsoft'];
// apple排在了最后: ['Google', 'apple', 'Microsoft'].sort();
// ['Google', 'Microsoft", 'apple']
// 无法理解的结果: [10, 20, 1, 2].sort();
// [1, 10, 2, 20]
根据相应的 ASCII码进行排序,而小写字母a的 ASCII码在大写字母之后
 
不过sort也是一个高阶函数,可以通过自定义,通过接收一个比较函数来实现自定义排序规则
var arr = ['Google', 'apple', 'Microsoft'];
arr.sort(function (s1, s2) {
    x1 = s1.toUpperCase();
    x2 = s2.toUpperCase();
    if (x1 < x2) {
        return -1; // x < y
    }
    if (x1 > x2) {
        return 1; // x > y
    }
    return 0; // x == y
}); // ['apple', 'Google', 'Microsoft']

  

猜你喜欢

转载自www.cnblogs.com/fuGuy/p/9208870.html