如何只构造数组的第一个索引

问题描述 投票:3回答:4

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

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

这导致使用额外变量。是否有另一种方法可以在不创建额外变量和避免ESLint错误的情况下执行此操作。谢谢。

javascript arrays eslint
4个回答
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
投票

你可以这样做

在阵列解构的帮助下。

let link = "hello?hahah";
[link] = link.split('?');
console.log(link);

0
投票

使用.shift()

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

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


0
投票
[link] = link.split("?");

T.J.的答案就是你要找的东西,

但变异变量不是编写代码的最佳方式。另一方面,破坏只是编写代码的一种简洁方式。如果你看到破坏部分的转换代码,你会发现正在设置一个新变量。

在旁注,eslint不能强迫你做任何事情,如果你关心性能你可以让link = link.split("?")[0]站立,

请在你的prefer-destructuring中禁用你的.eslintrc.json配置,

{   
  "rules": {
    "prefer-destructuring": ["error", {"object": false, "array": false}]   
  } 
}
© www.soinside.com 2019 - 2024. All rights reserved.