69 lines
2.2 KiB
Plaintext

== Why is this an issue?
A sparse array is an array in which the elements do not occupy a contiguous range of indices. In other words, there are gaps (or "holes") between the elements in the array, where some indices have no corresponding value assigned to them.
Including an extra comma in an array literal signifies an empty slot in the array, thus creating a sparse array. An empty slot is not the same as a slot filled with the `undefined` value. In some operations, empty slots behave as if they are filled with `undefined` but are skipped in others.
While this is a well-defined behavior, it can be misleading and raises suspicions about the original intent: an extra comma was intentionally inserted, or perhaps the developer meant to insert the missing value but forgot.
[source,javascript,diff-id=1,diff-type=noncompliant]
----
let a = [1, , 3, 6, 9]; // Noncompliant: Extra comma maybe denoting an oversight
----
You should either remove the extra comma if this was a mistake or add the value you meant to insert initially.
[source,javascript,diff-id=1,diff-type=compliant]
----
let a = [1, 3, 6, 9];
----
Alternatively, if the additional comma was intended, this should be made explicit with an `undefined` element.
[source,javascript]
----
let a = [1, undefined, 3, 6, 9];
----
== Resources
=== Documentation
* MDN web docs - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Indexed_collections#sparse_arrays[Sparse arrays]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Either supply the missing element or remove the extra comma
=== Highlighting
The sparse comma
'''
== Comments And Links
(visible only on this page)
=== on 8 Nov 2017, 09:56:07 Michael Gumowski wrote:
Removing PHP from the list of targeted language. You can not declare sparse arrays in PHP. The following code does not compile:
----
$array = [1, 2, 3, , 4];
----
However, sparse arrays can also be seen as a feature of the language. In the following code, the array is defined with 3 values, but the internal representation of the array is a map, which will use 3 keys: ``++14++``, ``++15++`` and ``++42++``.
----
$array[14] = "hello";
$array[15] = "world";
$array[42] = "yolo";
----
endif::env-github,rspecator-view[]