如何仅解构数组的第一个索引

时间:2018-12-16 15:48:22

标签: javascript arrays eslint

ESLint给出link = link.split("?")[0]的错误。它说要使用数组解构。但是如果我使用数组解构,那么代码将是

let [ temp ] = link.split("?");
link = temp;

这导致使用额外的变量。还有另一种方法可以执行此操作,而无需创建额外的变量并避免ESLint错误。谢谢。

4 个答案:

答案 0 :(得分:3)

  

但是如果我使用数组解构,那么代码将是...

您可以将其分解为现有变量,而不必声明新变量。因此,它将是:

[link] = link.split("?");

实时示例:

let link = "testing?one?two";
[link] = link.split("?");
console.log(link);

有时(例如,在使用对象分解时),您需要使用括号以避免解析混乱:

let link;
let obj = {
    link: "example"
};
({link} = obj);
console.log(link);

在其他时候,如果您希望依靠自动分号插入而不是在需要的地方键入分号,则在进行无声明的数组销毁时将需要;。这是一个错误:

// Hazard if relying on ASI
let link = "testing?one?two?"
console.log("hi there")
[link] = link.split("?")
console.log(link)

通常,在这种情况下,没有分号的人会使用前导;,例如:

;[link] = link.split("?")

答案 1 :(得分:1)

您可以这样做

借助数组解构。

ticket

答案 2 :(得分:0)

使用JavaScript

  

shift()方法从数组中删除第一个元素,并返回该删除的元素。此方法更改数组的长度。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

答案 3 :(得分:0)

[link] = link.split("?");

T.J。的答案就是您要寻找的东西

但是突变变量并不是编写代码的最佳方法。另一方面,破坏只是编写代码的一种干净方法。如果看到销毁部分的转码,您会发现正在设置一个新变量。

附带说明,eslint不能强迫您做任何事情,如果您担心表现,可以允许link = link.split("?")[0]站起来,

请在prefer-destructuring内禁用您的.eslintrc.json配置,

{   
  "rules": {
    "prefer-destructuring": ["error", {"object": false, "array": false}]   
  } 
}