Pular para o conteúdo

noAccumulatingSpread

Este conteúdo não está disponível em sua língua ainda.

Diagnostic Category: lint/performance/noAccumulatingSpread

Since: v1.0.0

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/

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) => {acc.push(val); return acc}, []);