一、数组

1、splice()

  1. 定义:

    通过删除替换现有元素或者原地添加新的元素来修改原数组。由被删除的元素组成的一个数组。

  2. 语法:

    array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
  3. 示例:

    var myFish = ["angel", "clown", "mandarin", "sturgeon"];
    var removed = myFish.splice(2, 0, "drum");
    // 运算后的 myFish: ["angel", "clown", "drum", "mandarin", "sturgeon"]
    // 被删除的元素: [], 没有元素被删除
    var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(3, 1);
    // 运算后的 myFish: ["angel", "clown", "drum", "sturgeon"]
    // 被删除的元素: ["mandarin"]
  4. 参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

2、slice()

  1. 定义:返回一个新数组,由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。

  2. 语法:

    arr.slice([begin[, end]])
  3. 示例:

    var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
    var citrus = fruits.slice(1, 3);
    // citrus contains ['Orange','Lemon']
    function list() {
      return Array.prototype.slice.call(arguments);
    }
    var list1 = list(1, 2, 3); // [1, 2, 3]
    // 将一个类数组对象/集合转换成一个新数组。

3、indexOf()

  1. 定义:返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。

  2. 语法:

    arr.indexOf(searchElement[, fromIndex])
  3. 示例:

    // 数组去重
    function unique(arr) {
      if (!Array.isArray(arr)) {
        console.log('type error!')
        return
      }
      var array = [];
      for (var i = 0; i < arr.length; i++) {
        if (array.indexOf(arr[i]) === -1) {
          array.push(arr[i])
        }
      }
      return array;
    }

4、entries(),keys() 和 values()

  1. 定义:遍历数组,返回一个遍历器对象,可以用for…of循环进行遍历。keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

  2. 语法:

    arr.entries()/keys()/values()
  3. 示例:

    for (let index of ['a', 'b'].keys()) {
      console.log(index);
    }
    // 0
    // 1
    for (let elem of ['a', 'b'].values()) {
      console.log(elem);
    }
    // 'a'
    // 'b'
    for (let [index, elem] of ['a', 'b'].entries()) {
      console.log(index, elem);
    }
    // 0 "a"
    // 1 "b"
    // 使用遍历器对象上的next()
    let letter = ['a', 'b', 'c'];
    let entries = letter.entries();
    console.log(entries.next().value); // [0, 'a']
    console.log(entries.next().value); // [1, 'b']
    console.log(entries.next().value); // [2, 'c']

5、flat()

  1. 定义:按照一个可指定的深度(默认为1)递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

  2. 语法:

    var newArray = arr.flat([depth])
  3. 示例:

    var arr2 = [1, ,2, [3, 4, [5, 6]]];
    arr2.flat();
    // [1, 2, 3, 4, [5, 6]]
    var arr3 = [1, 2, [3, 4, [5, 6]]];
    arr3.flat(2);
    // [1, 2, 3, 4, 5, 6]
    //使用 Infinity,可展开任意深度的嵌套数组
    var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
    arr4.flat(Infinity);
    // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

二、Promise

1、finally()

  1. 定义:不管 Promise 对象最后状态如何,都会执行的操作,即该操作应该是与状态无关的,不依赖于 Promise 的执行结果。

  2. 语法:

    promise.finally(fn)
  3. 示例:

    promise
    .then(result => {···})
    .catch(error => {···})
    .finally(() => {···});

2、Promise.all()

  1. 定义:将多个 Promise 实例,包装成一个新的 Promise 实例。当这些实例均为fulfilled时,封装后的实例是fulfilled,其余情况为rejected。

  2. 语法:传入的参数必须有必须具有 Iterator 接口,数组等。

    Promise.all([Iterator]);
  3. 示例:

    const p1 = new Promise((resolve, reject) => {
      resolve('hello');
    })
    .then(result => result)
    .catch(e => e);
    const p2 = new Promise((resolve, reject) => {
      throw new Error('报错了');
    })
    .then(result => result)
    .catch(e => e);
    Promise.all([p1, p2])
    .then(result => console.log(result))
    .catch(e => console.log(e));
    // ["hello", Error: 报错了]
    // 如果作为参数的 Promise 实例,自己定义了catch方法,
    // 那么它一旦被rejected,并不会触发Promise.all()的catch方法。

3、Promise.race()

  1. 定义:将多个 Promise 实例,包装成一个新的 Promise 实例。当这些实例内有一个状态发生改变时,那个率先改变的 Promise 实例的返回值,就传递给封装后实例调用。

  2. 语法:

    Promise.race([Iterator])
  3. 示例:

    const p = Promise.race([
      fetch('/resource-that-may-take-a-while'),
      new Promise(function (resolve, reject) {
        setTimeout(() => reject(new Error('request timeout')), 5000)
      })
    ]);
    p
    .then(console.log)
    .catch(console.error);
    // 如果 5 秒之内fetch方法无法返回结果,
    // 变量p的状态就会变为rejected,从而触发catch方法指定的回调函数。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

Axios简单配置使用 Previous
移动端适配 Next