JavaScript中的数组解构

use*_*012 2 javascript arrays destructuring eslint

我的vue-js应用程序中包含以下代码:

methods: {
    onSubmit() {
      ApiService.post('auth/sign_in', {
        email: this.email,
        password: this.password,
      })
        .then((res) => {
          saveHeaderToCookie(res.headers);
          this.$router.push({ name: 'about' });
        })
        .catch((res) => {
          this.message = res.response.data.errors[0];
          this.msgStatus = true;
          this.msgType = 'error';
        });
    },
  }
Run Code Online (Sandbox Code Playgroud)

在运行Es-lint时。this.message = res.response.data.errors[0];在此行出现一个错误,提示“使用数组分解”(首选分解)。什么是数组销毁以及如何执行此操作?请为此提供一个概念。我已经研究过,但无法弄清楚

Ama*_*dan 7

Destucturing在分配的左侧使用类似于结构的语法,将右侧的结构元素分配给各个变量。例如,

let array = [1, 2, 3, 4];
let [first, _, third] = array;
Run Code Online (Sandbox Code Playgroud)

destructures阵列[1, 2, 3]和各个元件分配给firstthird_是一个占位符,使其跳过第二元件)。由于LHS比RHS短,4因此也被忽略了。它等效于:

let first = array[0];
let third = array[2];
Run Code Online (Sandbox Code Playgroud)

还有一个对象销毁分配:

let object = {first: 1, second: 2, third: 3, some: 4};
let {first, third, fourth: some} = object;
Run Code Online (Sandbox Code Playgroud)

相当于

let first = object.first;
let third = object.third;
let fourth = object.some;
Run Code Online (Sandbox Code Playgroud)

还可以使用点差运算符:

let [first, ...rest] = [1, 2, 3];
Run Code Online (Sandbox Code Playgroud)

将分配1first[2, 3]rest

在您的代码中,它说您可以这样做:

[this.message] = res.response.data.errors;
Run Code Online (Sandbox Code Playgroud)

上的文档prefer-destructuring列出了它认为“正确”的内容。