noAccumulatingSpread
诊断类别:lint/performance/noAccumulatingSpread
¥Diagnostic Category: lint/performance/noAccumulatingSpread
自从:v1.0.0
¥Since: v1.0.0
禁止在累加器上使用扩展 (...
) 语法。
¥Disallow the use of spread (...
) syntax on accumulators.
扩展语法允许将可迭代对象扩展为其各个元素。
¥Spread syntax allows an iterable to be expanded into its individual elements.
应避免在累加器(如 .reduce
中的累加器)上使用扩展语法,因为它会导致时间复杂度为 O(n^2)
而不是 O(n)
。
¥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)
.
来源:https://prateeksurana.me/blog/why-using-object-spread-with-reduce-bad-idea/
¥Source: https://prateeksurana.me/blog/why-using-object-spread-with-reduce-bad-idea/
¥Examples
¥Invalid
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.
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.
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.
¥Valid
¥Related links