useAtIndex
¥Summary
-
规则生效日期:
v1.9.4¥Rule available since:
v1.9.4 -
¥Diagnostic Category:
lint/style/useAtIndex -
此规则包含 unsafe 修复程序。
¥This rule has an unsafe fix.
-
此规则的默认严重级别为 information。
¥The default severity of this rule is information.
-
来源:
¥Sources:
-
灵感来自
unicorn/prefer-at¥Inspired from
unicorn/prefer-at
-
¥How to configure
{ "linter": { "rules": { "style": { "useAtIndex": "error" } } }}¥Description
使用 at() 代替整数索引访问。
¥Use at() instead of integer index access.
访问数组或字符串末尾的元素很不方便,因为需要从要访问元素的从 1 开始的后向索引中减去数组或字符串的长度。例如,要访问数组或字符串的最后一个元素,你需要编写 array[array.length - 1]。实现相同目标的更便捷方法是使用带有负索引的 at() 方法。要访问数组或字符串的最后一个元素,只需输入 array.at(-1)。
¥Accessing an element at the end of an array or a string is inconvenient because you have to subtract the length of the array or the string from the backward 1-based index of the element to access.
For example, to access the last element of an array or a string, you would have to write array[array.length - 1].
A more convenient way to achieve the same thing is to use the at() method with a negative index.
To access the last element of an array or a string just write array.at(-1).
此规则强制要求在 at() 更方便的情况下,优先使用 at() 而不是索引访问、charAt() 和 slice()[0]。
¥This rule enforces the usage of at() over index access, charAt(), and slice()[0] when at() is more convenient.
¥Examples
¥Invalid
const foo = array[array.length - 1];code-block.js:1:13 lint/style/useAtIndex FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Prefer X.at(-Y) over X[X.length - Y].
> 1 │ const foo = array[array.length - 1];
│ ^^^^^^^^^^^^^^^^^^^^^^^
2 │
ℹ Using .at() is more convenient and is easier to read.
ℹ Unsafe fix: Use .at().
1 │ - const·foo·=·array[array.length·-·1];
1 │ + const·foo·=·array.at(-1);
2 2 │
const foo = array[array.length - 5];code-block.js:1:13 lint/style/useAtIndex FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Prefer X.at(-Y) over X[X.length - Y].
> 1 │ const foo = array[array.length - 5];
│ ^^^^^^^^^^^^^^^^^^^^^^^
2 │
ℹ Using .at() is more convenient and is easier to read.
ℹ Unsafe fix: Use .at().
1 │ - const·foo·=·array[array.length·-·5];
1 │ + const·foo·=·array.at(-5);
2 2 │
const foo = array.slice(-1)[0];code-block.js:1:13 lint/style/useAtIndex FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Prefer X.at(Y) over X.slice(Y)[0].
> 1 │ const foo = array.slice(-1)[0];
│ ^^^^^^^^^^^^^^^^^^
2 │
ℹ Using .at() is more convenient and is easier to read.
ℹ Unsafe fix: Use .at().
1 │ - const·foo·=·array.slice(-1)[0];
1 │ + const·foo·=·array.at(-1);
2 2 │
const foo = array.slice(-1).pop();code-block.js:1:13 lint/style/useAtIndex FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Prefer X.at(-1) over X.slice(-a).pop().
> 1 │ const foo = array.slice(-1).pop();
│ ^^^^^^^^^^^^^^^^^^^^^
2 │
ℹ Using .at() is more convenient and is easier to read.
ℹ Unsafe fix: Use .at().
1 │ - const·foo·=·array.slice(-1).pop();
1 │ + const·foo·=·array.at(-1);
2 2 │
const foo = array.slice(-5).shift();code-block.js:1:13 lint/style/useAtIndex FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Prefer X.at(Y) over X.slice(Y).shift().
> 1 │ const foo = array.slice(-5).shift();
│ ^^^^^^^^^^^^^^^^^^^^^^^
2 │
ℹ Using .at() is more convenient and is easier to read.
ℹ Unsafe fix: Use .at().
1 │ - const·foo·=·array.slice(-5).shift();
1 │ + const·foo·=·array.at(-5);
2 2 │
const foo = string.charAt(string.length - 5);code-block.js:1:13 lint/style/useAtIndex FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Prefer X.at(-Y) over X.charAt(X.length - Y).
> 1 │ const foo = string.charAt(string.length - 5);
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 │
ℹ Using .at() is more convenient and is easier to read.
ℹ Unsafe fix: Use .at().
1 │ - const·foo·=·string.charAt(string.length·-·5);
1 │ + const·foo·=·string.at(-5);
2 2 │
¥Valid
const foo = array.at(-1);const foo = array.at(-5);const foo = array[100];const foo = array.at(array.length - 1);array[array.length - 1] = foo;¥Related links
Biome v2.1 中文网 - 粤ICP备13048890号