掘金摸鱼传送门:
https://juejin.im/user/5dddebaef265da05b87952b0/posts

基础函数

1、push和pop

如果学过数据结构对push和pop来说就不陌生,这是对栈的压入和获取(在数组的末尾添加或删除元素);
在js中的语法也与其相同:

const arr = [1, 8, 10, 22, 5];
arr.push(6);
console.log(arr);       //[1, 8, 10, 22, 5, 6]

arr.pop();
console.log(arr);       //[1, 8, 10, 22]

2、shift和unshfit

这两个方法就相当于在队列中添加和删除元素(在数组最开始添加或删除元素);

arr.shift();
console.log(arr);       //[8, 10, 22]

arr.unshift(100);       //[100, 8, 10, 22]

3、concat

用于将两个数组连接在一起:

const arr1 = [9, 8, 7, 6];
arr.concat(arr1);       //[100, 8, 10, 22, 5, 9, 8, 7, 6]

4、splice

这个参数用于删除数组中的元素,其中有两个参数,第一个参数指的是从哪个位置开始删除,第二个元素指的是删除几个元素:

let a1 = [100, 8, 10, 22, 5, 9, 8, 7, 6];
a1.splice(5,2);

5、slice

slice方法是用来获取一个数组中某个区间内的数值,但不破坏原来数组。有两个参数,第一个参数指的是从哪里开始截取,第二个参数指的是截取到这个位置为止(此位置不截取)

a1.slice();

6、split

将字符创转换为数组:

let s2 = "gengtian";
s2.split('');

7、reverse

将数组反转:

a1.reverse();

8、indexOf

此方法从前往后查找数组中是否有符合条件元素,有则返回第一个符合的索引值,若不存在,则返回 -1

a1.indexof(8);

9、lastindexOf

此方法作用和indexOf相同,不同在于是从后往前查找。

10、includes

判断数中是否包含给定的值;

let arr = [1,2,3,4,5];
let arr1 = arr.includes(2);  
console.log(arr1);   // ture

值得注意的是:includes与indexOf()的区别:
1 indexOf()返回的是数值,而includes()返回的是布尔值
2 indexOf() 不能判断NaN,返回为-1 ,includes()则可以判断

let arr2 = [2, 9, NaN];
let arr3 = arr2.includes(NaN);
console.log(arr3);   //true

11、Array.from

Array.from() 将伪数组变成数组,就是只要有length的就可以转成数组。

let str3 = '12345';
console.log(Array.from(str3));   // ["1", "2", "3", "4", "5"]
let obj1 = {0:'a', 1:'b', 2:'c',length:3};
console.log(Array.from(obj1));   // ["a", "b", "c"]

12、fill

将给定的数值填充到数组中,有三个参数,第一个:是给定值;第二个:是开始填充的位置(若不写默认从0开始);第三个:是结束的位置(若第三个参数不填写则默认填充到最后);

let arr = [1,2,3,4,5];
let arr1 = arr.fill(7);
console.log(arr1);  // [7,7,7,7,7]
let arr2 = arr.fill(7,2);
console.log(arr2);   //[1,2,7,7,7]
let arr3 = arr.fill(7,1,3);
console.log(arr3);   //[1,7,7,4,5]

13、key

返回的是数组的索引值:

let arr = [1,2,3,4];
let arr1 = arr.keys();
console.log(arr1);  //[0,1,2,3]

14、entries

用于遍历数组的键名和键值(索引值和数值)

let arr = [1,2,3,4]
let arr1 = arr.entries()
for (let e of arr1) {
    console.log(e);   // [0,1] [1,2] [2,3] [3,4]
}

高阶函数

1、高阶函数基本简介

    高阶函数,顾名思义,比普通函数高级一点,那么,高级哪了呢?一般函数的参数是用于接收变量,而高级函数的参数可以用于接收函数,是不是很高级,很意外?hhh,并没有。是的,只是不同形式的不同叫法而已,写法用法也都完全一样:
普通函数:

function add(a, b){
    let temp = a + b;
    console.log(temp);
    return temp;
}

高阶函数:

function (a, b, f){
    return f(a)+ f(b);
}

function f(s, t){
    return s + t;
}

这就是我理解的高阶函数。

2、map

    map 就是用来遍历一个数组,具体写法:arr.map(),具体如下:

const arr = [1,2,3,4,5,6,7];
arr.map((item)=>{
    console.log(item) // 每次打印会分别打印出1、2、3、4、5、6、7
})

3、forEach

forEach和map作用相似都是遍历一个数组,不同之处在于forEach并不会新生成一个数组,也就不需要一个返回值。

const arr = const arr = [1, 8, 10, 22, 5];;
arr.forEach((item)=>{
    console.log(item)
})                  

4、filter

    filter()和map()类似,参数都用来接收一个函数,与map不同的是:filter把传入的函数作用于每个数值,并通过返回值为true或false决定筛选去留,例如:

const arr = [1,2,3,4,5,6];

arr.filter(function(s){
    return s>3
})

其中回调函数可接收三个参数:element、index、self分别表示元素、元素在数组中的位置、指代数组本身。

var arr = ['A', 'B', 'C'];
var r = arr.filter(function (element, index, self) {
    console.log(element); // 依次打印'A', 'B', 'C'
    console.log(index); // 依次打印0, 1, 2
    console.log(self); // self就是变量arr
    return true;
});

5、sort

顾名思义,sort方法就是将数组进行排序,那么首先来看你看他的效果吧:

const arr = [1, 8, 10, 22, 5];
console.log(arr.sort());

结果如下:

是不是很好奇为什么排序结果不正确,其实在使用sort方法时,默认先将里面的元素转化为string类型,也就是字符串之间的比较,也就有了10< 22< 5< 8的结果。
但是sort方法也是高阶函数 ,里面的参数也可以用来接收函数。故排序可以为:

const arr = [1, 8, 10, 22, 5];
arr.sort(function(x,y){
  if(x&gt;y){
    return -1;
  }
  else{
    return 1;
  }
})

这个问题在项目上经常会遇到,在比较两个数时候要确定两个值是否都为整型,如果为字符串,则在比较时候会发生一些错误,在后期项目维护时候会付出很大的代价。

6、every

此方法用于判断数组中每个元素是否全部符合条件,返回true/false,实例如下:

const arr = [1, 8, 10, 22, 5];
console.log(arr.every(function(s){
    return s&gt;1
}))                 //结果为false

7、some

此方法用于判断数组中的元素是否含有至少一个符合条件,返回true、false:

let arr = [1,2,3,4,5]
arr.some( (value, index) =&gt;value&lt;2)     //true

8、find

此方法用于判断数组中是否有符合条件的元素,如有,则返回第一个与之匹配元素,否则返回undefined:

const arr = [1, 8, 10, 22, 5];
console.log(arr.find(function(s){
    return s==12
}))                 //undefined

console.log(arr.find(function(s){
    return s==8;
}))                 //8

9、findIndex

用法都相似,尤其是和find相比,只是返回值不同,find返回匹配元素,findIndex返回这个元素的索引

const arr = [1, 8, 10, 22, 5];
let tempStatus;
tempStatus = arr.findIndex(function(s){
    return s == 22
})
console.log(tempStatus);