2023-05-03 11:06:20 +02:00
== Why is this an issue?
2021-04-28 16:49:39 +02:00
Many of JavaScript's ``++Array++`` methods return an altered version of the array while leaving the source array intact. ``++reverse++`` and ``++sort++`` do not fall into this category. Instead, they alter the source array _in addition to_ returning the altered version, which is likely not what was intended.
This rule raises an issue when the return values of these methods are assigned, which could lead maintainers to overlook the fact that the original value is altered.
2021-04-28 18:08:03 +02:00
2023-05-03 11:06:20 +02:00
=== Noncompliant code example
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,javascript]
2021-04-28 16:49:39 +02:00
----
2023-05-13 01:46:16 +10:00
const reversed = a.reverse(); // Noncompliant
const sorted = b.sort(); // Noncompliant
2021-04-28 16:49:39 +02:00
----
2021-04-28 18:08:03 +02:00
2023-05-03 11:06:20 +02:00
=== Compliant solution
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,javascript]
2021-04-28 16:49:39 +02:00
----
2023-05-13 01:46:16 +10:00
const reversed = [...a].reverse(); // spread the contents of 'a' into a new array, so reverse doesn't impact 'a'
const reversed2 = a.toReversed(); // ES2023 method that copies and reverses the array
a.reverse(); // reverse the array in place
2021-04-28 16:49:39 +02:00
2023-05-13 01:46:16 +10:00
const sorted = [...b].sort(); // spread the contents of 'b' into a new array, so sort doesn't impact 'b'
const sorted2 = b.toSorted(); // ES2023 method that copies and sorts the array
b.sort(); // sort the array in place
2021-04-28 16:49:39 +02:00
----
2021-04-28 18:08:03 +02:00
2021-06-03 09:05:38 +02:00
ifdef::env-github,rspecator-view[]
2021-09-20 15:38:42 +02:00
'''
== Implementation Specification
(visible only on this page)
include::message.adoc[]
include::highlighting.adoc[]
2021-06-08 15:52:13 +02:00
'''
2021-06-02 20:44:38 +02:00
== Comments And Links
(visible only on this page)
include::comments-and-links.adoc[]
2021-06-03 09:05:38 +02:00
endif::env-github,rspecator-view[]