noAccumulatingSpread
このコンテンツはまだ日本語訳がありません。
Summary
Section titled “Summary”- Rule available since:
v1.0.0 - Diagnostic Category:
lint/performance/noAccumulatingSpread - This rule is recommended, which means is enabled by default.
- This rule doesn’t have a fix.
- The default severity of this rule is warning.
How to configure
Section titled “How to configure”{ "linter": { "rules": { "performance": { "noAccumulatingSpread": "error" } } }}Description
Section titled “Description”Disallow the use of spread (...) syntax on accumulators.
Spread syntax allows an iterable to be expanded into its individual elements.
Spread syntax should be avoided on accumulators (like those in .reduce)
because it causes a time complexity of O(n^2) instead of O(n).
Source: https://prateeksurana.me/blog/why-using-object-spread-with-reduce-bad-idea/
Examples
Section titled “Examples”Invalid
Section titled “Invalid”var a = ['a', 'b', 'c'];a.reduce((acc, val) => [...acc, val], []);code-block.js:2:25 lint/performance/noAccumulatingSpread ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠ Avoid the use of spread (...) syntax on accumulators.
1 │ var a = [‘a’, ‘b’, ‘c’];
> 2 │ a.reduce((acc, val) => […acc, val], []);
│ ^^^^^^
3 │
ℹ Spread syntax should be avoided on accumulators (like those in .reduce) because it causes a time complexity of O(n^2).
ℹ Consider methods such as .splice or .push instead.
var a = ['a', 'b', 'c'];a.reduce((acc, val) => {return [...acc, val];}, []);code-block.js:2:33 lint/performance/noAccumulatingSpread ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠ Avoid the use of spread (...) syntax on accumulators.
1 │ var a = [‘a’, ‘b’, ‘c’];
> 2 │ a.reduce((acc, val) => {return […acc, val];}, []);
│ ^^^^^^
3 │
ℹ Spread syntax should be avoided on accumulators (like those in .reduce) because it causes a time complexity of O(n^2).
ℹ Consider methods such as .splice or .push instead.
var a = ['a', 'b', 'c'];a.reduce((acc, val) => ({...acc, [val]: val}), {});code-block.js:2:26 lint/performance/noAccumulatingSpread ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠ Avoid the use of spread (...) syntax on accumulators.
1 │ var a = [‘a’, ‘b’, ‘c’];
> 2 │ a.reduce((acc, val) => ({…acc, [val]: val}), {});
│ ^^^^^^
3 │
ℹ Spread syntax should be avoided on accumulators (like those in .reduce) because it causes a time complexity of O(n^2).
ℹ Consider methods such as .splice or .push instead.
var a = ['a', 'b', 'c'];a.reduce((acc, val) => Object.assign(acc, val), []);code-block.js:2:24 lint/performance/noAccumulatingSpread ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠ Avoid the use of Object.assign on accumulators.
1 │ var a = [‘a’, ‘b’, ‘c’];
> 2 │ a.reduce((acc, val) => Object.assign(acc, val), []);
│ ^^^^^^^^^^^^^
3 │
ℹ Spread syntax should be avoided on accumulators (like those in .reduce) because it causes a time complexity of O(n^2).
ℹ Consider methods such as .splice or .push instead.
var a = ['a', 'b', 'c'];a.reduce((acc, val) => {return Object.assign(acc, val);}, []);code-block.js:2:32 lint/performance/noAccumulatingSpread ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠ Avoid the use of Object.assign on accumulators.
1 │ var a = [‘a’, ‘b’, ‘c’];
> 2 │ a.reduce((acc, val) => {return Object.assign(acc, val);}, []);
│ ^^^^^^^^^^^^^
3 │
ℹ Spread syntax should be avoided on accumulators (like those in .reduce) because it causes a time complexity of O(n^2).
ℹ Consider methods such as .splice or .push instead.
var a = ['a', 'b', 'c'];a.reduce((acc, val) => {acc.push(val); return acc}, []);Related links
Section titled “Related links”Copyright (c) 2023-present Biome Developers and Contributors.