参考MDN: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array

Array.isArray() 用于确定传递的值是否是一个 Array

  1. Array.isArray([1, 2, 3]);
  2. // true
  3. Array.isArray({foo: 123});
  4. // false
  5. Array.isArray("foobar");
  6. // false
  7. Array.isArray(undefined);
  8. // false

arr.splice

语法:arr.splice(第几位开始,删除几位,添加),第一个参数是必填
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
1)整合新的数组

  1. let arr = ['t','a','o','w','u'];
  2. arr.splice(1)//第一位开始删除其他 ["t"]
  3. arr.splice(1,1)//第一位开始删除一位 ["t", "o", "w", "u"]
  4. arr.splice(arr.length,0,'t','w','h')//数组长度开始删除0位然后添加 ["t", "a", "o", "w", "u", "t", "w", "h"]

2)字符串转数组

  1. function list() {
  2. return Array.prototype.slice.call(arguments);
  3. }
  4. var list1 = list(1, 2, 3);//[1, 2, 3]

数组第一位添加数据

  1. let arr = ['t','a','o','w','u'];
  2. arr.unshift(0)

或者:

  1. let arr = ['t','a','o','w','u'];
  2. arr.splice(0,0,"t")

第一位删除数据

  1. let arr = ['t','a','o','w','u'];
  2. arr.shift(0)

最后一位添加数据

  1. let arr = ['t','a','o','w','u'];
  2. arr.push(6)

最后一位删除数据

  1. let arr = ['t','a','o','w','u'];
  2. arr.pop()

数组排序

**sort()** 方法用原地算法对数组的元素进行排序

  1. let arr = ['1', '2', '6', '77', '7'];
  2. arr.sort(function (a, b) {
  3. return a - b;
  4. })

image.png

数组反转

**reverse()** 方法将数组中元素的位置颠倒

  1. const array1 = ['one', 'two', 'three'];
  2. console.log('array1:', array1);
  3. // expected output: "array1:" Array ["one", "two", "three"]


创建新数组

1)slice复制数组或者数组的一部分

主要理解参数第一位为从哪一位开始,第二位为从哪一位结束,这一对象是一个由 beginend 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变

  1. let arr = ['t','a','o','w','u'];
  2. arr.slice()
  3. arr.slice(1,3)

2) Array.from() 可以通过以下方式来创建数组对象:

  • 伪数组对象(拥有一个 length 属性和若干索引属性的任意对象)
  • 可迭代对象(可以获取对象中的元素,如 Map和 Set 等)array from()

    String 生成数组

  1. Array.from('foo');
  2. // [ "f", "o", "o" ]

Set 生成数组

  1. const set = new Set(['foo', 'bar', 'baz', 'foo']);
  2. Array.from(set);
  3. // [ "foo", "bar", "baz" ]

Map 生成数组

  1. const map = new Map([[1, 2], [2, 4], [4, 8]]);
  2. Array.from(map);
  3. // [[1, 2], [2, 4], [4, 8]]
  4. const mapper = new Map([['1', 'a'], ['2', 'b']]);
  5. Array.from(mapper.values());
  6. // ['a', 'b'];
  7. Array.from(mapper.keys());
  8. // ['1', '2'];

从类数组对象(arguments)生成数组

  1. function f() {
  2. return Array.from(arguments);
  3. }
  4. f(1, 2, 3);
  5. // [ 1, 2, 3 ]

Array.from 中使用箭头函数

  1. // Using an arrow function as the map function to
  2. // manipulate the elements
  3. Array.from([1, 2, 3], x => x + x);
  4. // [2, 4, 6]

3) concat合并两个或多个数组

  1. const array1 = ['a', 'b', 'c'];
  2. const array2 = ['d', 'e', 'f'];
  3. const array3 = array1.concat(array2);

4)解构赋值

image.png

5)array.of()

image.png

字符串转数组

  1. function list() {
  2. return Array.prototype.slice.call(arguments);
  3. }
  4. var list1 = list(1, 2, 3);//[1, 2, 3]

数组转字符串

**toString()** 返回一个字符串,表示指定的数组及其元素

  1. const array1 = [1, 2, 'a', '1a'];
  2. console.log(array1.toString());
  3. console.log(array1.join());

join

  1. const elements = ['Fire', 'Air', 'Water'];
  2. console.log(elements.join());
  3. // expected output: "Fire,Air,Water"
  4. console.log(elements.join(''));
  5. // expected output: "FireAirWater"
  6. console.log(elements.join('-'));
  7. // expected output: "Fire-Air-Water"

查找数组中是否含有某个值

方式一 **includes()**
**includes()** 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true

  1. const array1 = [1, 2, 3];
  2. console.log(array1.includes(2));
  3. // expected output: true

方式二 **indexOf()**
**indexOf()**方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

  1. const beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];
  2. console.log(beasts.indexOf('bison'));
  3. // expected output: 1
  4. console.log(beasts.indexOf('giraffe'));
  5. // expected output: -1

获取数组中每一个数据然后进行其他操作(没有返回值)

foreach常用与获取数据之后的过程,forEach()会改变原始的数组的值

  1. <script>
  2. const array = ['a', 'b', 'c'];
  3. array.forEach((item, index) => {
  4. console.log(item)
  5. });
  6. </script>

不要在foreach中进行删除增加数据。

过滤数组

**filter()** 创建一个新数组,return后面跟一个条件判断,如果为true则返回一个新的数组

  1. const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
  2. const result = words.filter(item => item.length > 6);
  3. console.log(result);
  4. // expected output: Array ["exuberant", "destruction", "present"]

遍历获取新的数组(有返回值,一对一)

遍历返回的新数组不回改变原数组,建议遍历的时候使用

  1. const array1 = [1, 4, 9, 16];
  2. // pass a function to map
  3. const map1 = array1.map(x => x * 2);
  4. console.log(map1);
  5. // expected output: Array [2, 8, 18, 32]

求和或者求平均值

reduce
arr.reduce(sum,currentData,index)

  1. let arr =[0, 1, 2, 3, 4];
  2. arr.reduce((accumulator, currentValue, currentIndex, array)=>{
  3. return accumulator + currentValue;
  4. });