一、数组

1、function(value, index, array) {}

【格式:】

function (value, index, array) => {
    // value 指 数组当前遍历的值, index 指 数组当前遍历的下标, array 指 当前数组
    // ... 自定义函数行为
    // return ...;
}

2、Array.map(function() {})

  返回值:一个新数组。
  简单理解为:此方法用于 根据 自定义执行函数 处理数组中的每个元素,并作为一个新数组 返回,不会改变原来的数组(除非主动修改原数组的值)。

【举例:给数组中的每个元素值加 6,并生成一个新数组】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.map((value, index, array) => {
    // value 指 数组当前遍历的值, index 指 数组当前遍历的下标, array 指 当前数组
    return array[index] += 6;
});
console.log(newArr);   // 输出 [7, 8, 9, 10, 11]
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [7, 8, 9, 10, 11]
console.log(newArr);  // 输出 [7, 8, 9, 10, 11]

JS 数组 常用方法-冯金伟博客园

3、Array.forEach(function() {})

  返回值:undefined,即没有返回值。
  简单理解为:此方法用于 根据 自定义执行函数 处理数组中的每个元素,返回 undefined(没有返回值),不会改变原来的数组(除非主动修改原数组的值)。
  注:
    与 map 方法的区别在于 没有返回值。

【举例:给数组中的每个元素值加 6,不会生成一个新数组】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.forEach((value, index, array) => {
    // value 指 数组当前遍历的值, index 指 数组当前遍历的下标, array 指 当前数组
    return array[index] += 6;
});
console.log(newArr);   // 输出 undefined
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [7, 8, 9, 10, 11]
console.log(newArr);  // 输出 undefined

JS 数组 常用方法-冯金伟博客园

4、Array.filter(function() {})

  返回值:返回一个新数组。
  简单理解为:此方法用于 根据 自定义执行函数 处理数组中的每个元素,过滤原数组,并返回一个新数组,不会改变原来的数组(除非主动修改原数组的值)。
  注:
    与 map 方法的区别在于 返回的是一个过滤后的数组。

【举例:过滤数组中 大于 3 的数据,并作为一个新数组】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.filter((value, index, array) => {
    // value 指 数组当前遍历的值, index 指 数组当前遍历的下标, array 指 当前数组
    return value > 3;
});
console.log(newArr);   // 输出 [4, 5]
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
console.log(newArr);  // 输出 [4, 5]

JS 数组 常用方法-冯金伟博客园

5、Array.every(function() {})

  返回值:一个 布尔值。
  简单理解为:此方法用于 根据 自定义执行函数 处理数组中的每个元素,并返回一个布尔值,不会改变原来的数组(除非主动修改原数组的值)。若返回值为 true,则表示 数组每个元素均满足 function。否则,返回值为 false。
  注:
    与 map 方法的区别在于 其返回的是一个 布尔值。

【举例:比较数组的每个值,若值均大于 3,则返回 true,否则返回 false】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.every((value, index, array) => {
    // value 指 数组当前遍历的值, index 指 数组当前遍历的下标, array 指 当前数组
    return value > 3;
});
console.log(newArr);   // 输出 false
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
console.log(newArr);  // 输出 false

JS 数组 常用方法-冯金伟博客园

6、Array.some(function() {})

  返回值:一个 布尔值。
  简单理解为:此方法用于 根据 自定义执行函数 处理数组中的每个元素,并返回一个布尔值,不会改变原来的数组(除非主动修改原数组的值)。若返回值为 true,则表示 数组每个元素有部分满足 function。返回值为 false,则表示数组每个元素 均不满足 function。
  注:
    与 map 方法的区别在于 其返回的是一个 布尔值。

【举例:比较数组的每个值,若部分值大于 3,则返回 true,若值全小于 3,则返回 false】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.some((value, index, array) => {
    // value 指 数组当前遍历的值, index 指 数组当前遍历的下标, array 指 当前数组
    return value > 3;
});
console.log(newArr);   // 输出 true
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
console.log(newArr);  // 输出 true

JS 数组 常用方法-冯金伟博客园

7、Array.push(data)

  返回值:当前数组的长度。会改变原数组。
  简单理解为:向数组的末尾添加一个数据,并返回添加后的数组长度。

【举例:向数组末尾添加一个数据,并返回添加后的数组长度】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.push(1);
console.log(newArr);   // 输出 6
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [1, 2, 3, 4, 5, 1]
console.log(newArr);  // 输出 6

JS 数组 常用方法-冯金伟博客园

8、Array.pop()

  返回值:当前删除的数据。会改变原数组。
  简单理解为:从数组的末尾删除最后一个数据,并返回删除后的数组数据。

【举例:从数组末尾删除最后一个数据,并返回当前删除的数据】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.pop();
console.log(newArr);   // 输出 5
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [1, 2, 3, 4]
console.log(newArr);  // 输出 5

JS 数组 常用方法-冯金伟博客园

9、Array.shift()

  返回值:当前删除的数据。会改变原数组。
  简单理解为:从数组的头部删除第一个数据,并返回删除后的数组数据。

【举例:删除数组头部的第一个元素,并返回该值】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.shift();
console.log(newArr);   // 输出 1
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [2, 3, 4, 5]
console.log(newArr);  // 输出 1

JS 数组 常用方法-冯金伟博客园

10、Array.unshift(data1, data2)

  返回值:当前数组的长度,会改变原数组。
  简单理解为:将一些数据添加到数组的头部。

【举例:将 1, 2, 4 添加到数组的头部】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.unshift(1, 2, 4);
console.log(newArr);   // 输出 8
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [1, 2, 4, 1, 2, 3, 4, 5]
console.log(newArr);  // 输出 8

JS 数组 常用方法-冯金伟博客园

11、Array.concat(Array)

  返回值:一个新的数组。不会改变原数组(除非主动修改)。
  简单理解为:两个数组拼接成一个数组。

【举例:两数组拼接,返回一个新数组】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.concat([1, 2, 3, 4, 5]);
console.log(newArr);   // 输出 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
console.log(newArr);  // 输出 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

JS 数组 常用方法-冯金伟博客园

12、Array.toString()

  返回值:一个字符串。不会改变原数组(除非主动修改)。
  简单理解为:将当前数组转为字符串输出,不改变原数组。

【举例:将数组转为字符串,不改变原数组】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.toString();
console.log(newArr);   // 输出 1, 2, 3, 4, 5
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
console.log(newArr);  // 输出 1, 2, 3, 4, 5

JS 数组 常用方法-冯金伟博客园

13、Array.join()

  返回值:一个字符串。不会改变原数组(除非主动修改)。
  简单理解为:将当前数组转为字符串输出,不改变原数组。
  注:
    与 toString 方法的区别在于,可以自定义数据间连接的符号(默认以逗号分隔)。

【举例:将数组转为字符串,并以 * 分隔】

let arr = [1, 2, 3, 4, 5];
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
let newArr = arr.join('*');
console.log(newArr);   // 输出 1*2*3*4*5
console.log(arr === newArr);  // 输出 false
console.log(arr);   // 输出 [1, 2, 3, 4, 5]
console.log(newArr);  // 输出 1*2*3*4*5

JS 数组 常用方法-冯金伟博客园

14、Array.splice(开始位置(必须), 删除个数(必须), 新元素…(可选))

  返回值:一个新数组(删除的元素组成的数组)。会改变原数组。
  简单理解为:对数组进行增、删、改。
    若当前方法参数只有两个必须项,没有新元素,则进行的是删除操作。

【举例:对数组元素进行增删改】

【举例:对数组元素进行增删改】

let arr = [1, 2, 3, 4, 5];
console.log(arr);       // 输出 [1, 2, 3, 4, 5]
// 在数组下标为 2 的地方,新增 2 个元素,未进行删除操作,返回 []
let arr1 = arr.splice(2, 0, 7, 8);
console.log(arr);       // 输出 [1, 2, 7, 8, 3, 4, 5]
console.log(arr1);      // []

// 在数组下标为 2 的地方,删除 3 个元素,进行删除操作,返回删除的数组
let arr2 = arr.splice(2, 3)
console.log(arr);        // 输出 [1, 2, 4, 5]
console.log(arr2);        // 输出 [7, 8, 3]

// 在数组下标为 2 的地方,删除 1 个元素,并新增 2 个元素,返回删除的数组
let arr3 = arr.splice(2, 1, 8, 6);
console.log(arr);        // 输出 [1, 2, 8, 6, 5]
console.log(arr3);        // 输出 [4]

JS 数组 常用方法-冯金伟博客园