You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 27, 2023. It is now read-only.
<p>TheabstractoperationGroupBytakesarguments<var>items</var> (an ECMAScript language value), <var>callbackfn</var> (an ECMAScript language value), and<var>keyCoercion</var> (<emu-const>property</emu-const> or <emu-const>zero</emu-const>) andreturnseitheranormalcompletioncontainingaListof Records with fields <varclass="field">[[Key]]</var> (an ECMAScript language value) and <varclass="field">[[Elements]]</var> (a List of ECMAScript language values), or a throwcompletion. It performs the following steps when called:</p>
2749
-
<emu-alg><ol><li>Perform ? RequireObjectCoercible(<var>items</var>).</li><li>If IsCallable(<var>callbackfn</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>groups</var> be a new empty List.</li><li>Let <var>iteratorRecord</var> be ? GetIterator(<var>items</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat,<ol><li>If <var>k</var> ≥ 2<sup>53</sup> - 1, then<ol><li>Let <var>error</var> be ThrowCompletion(a newly created <emu-val>TypeError</emu-val> object).</li><li>Return ? IteratorClose(<var>iteratorRecord</var>, <var>error</var>).</li></ol></li><li>Let <var>next</var> be ? IteratorStep(<var>iteratorRecord</var>).</li><li>If <var>next</var> is <emu-val>false</emu-val>, then<ol><li>Return <var>groups</var>.</li></ol></li><li>Let <var>value</var> be ? IteratorValue(<var>next</var>).</li><li>Let <var>key</var> be Completion(Call(<var>callbackfn</var>, <emu-val>undefined</emu-val>, « <var>value</var>, 𝔽(<var>k</var>) »)).</li><li>IfAbruptCloseIterator(<var>key</var>, <var>iteratorRecord</var>).</li><li>If <var>keyCoercion</var> is <emu-const>property</emu-const>, then<ol><li>Set <var>key</var> to Completion(ToPropertyKey(<var>key</var>)).</li><li>IfAbruptCloseIterator(<var>key</var>, <var>iteratorRecord</var>).</li></ol></li><li>Else,<ol><li>Assert: <var>keyCoercion</var> is <emu-const>zero</emu-const>.</li><li>If <var>key</var> is <emu-val>-0</emu-val><sub>𝔽</sub>, set <var>key</var> to <emu-val>+0</emu-val><sub>𝔽</sub>.</li></ol></li><li>Perform <emu-xref aoid="AddValueToKeyedGroup" id="_ref_2"><a href="#sec-add-value-to-keyed-group">AddValueToKeyedGroup</a></emu-xref>(<var>groups</var>, <var>key</var>, <var>value</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li></ol></emu-alg>
2749
+
<emu-alg><ol><li>Perform ? RequireObjectCoercible(<var>items</var>).</li><li>If IsCallable(<var>callbackfn</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>groups</var> be a new empty List.</li><li>Let <var>iteratorRecord</var> be ? GetIterator(<var>items</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat,<ol><li>If <var>k</var> ≥ 2<sup>53</sup> - 1, then<ol><li>Let <var>error</var> be ThrowCompletion(a newly created <emu-val>TypeError</emu-val> object).</li><li>Return ? IteratorClose(<var>iteratorRecord</var>, <var>error</var>).</li></ol></li><li>Let <var>next</var> be ? IteratorStep(<var>iteratorRecord</var>).</li><li>If <var>next</var> is <emu-val>false</emu-val>, then<ol><li>Return <var>groups</var>.</li></ol></li><li>Let <var>value</var> be ? IteratorValue(<var>next</var>).</li><li>Let <var>key</var> be Completion(Call(<var>callbackfn</var>, <emu-val>undefined</emu-val>, « <var>value</var>, 𝔽(<var>k</var>) »)).</li><li>IfAbruptCloseIterator(<var>key</var>, <var>iteratorRecord</var>).</li><li>If <var>keyCoercion</var> is <emu-const>property</emu-const>, then<ol><li>Set <var>key</var> to Completion(ToPropertyKey(<var>key</var>)).</li><li>IfAbruptCloseIterator(<var>key</var>, <var>iteratorRecord</var>).</li></ol></li><li>Else,<ol><li>Assert: <var>keyCoercion</var> is <emu-const>zero</emu-const>.</li><li>If <var>key</var> is <emu-val>-0</emu-val><sub>𝔽</sub>, set <var>key</var> to <emu-val>+0</emu-val><sub>𝔽</sub>.</li></ol></li><li>Perform <emu-xref aoid="AddValueToKeyedGroup" id="_ref_2"><a href="#sec-add-value-to-keyed-group">AddValueToKeyedGroup</a></emu-xref>(<var>groups</var>, <var>key</var>, <var>value</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li></ol></emu-alg>
<p>The abstract operation AddValueToKeyedGroup takes arguments<var>groups</var> (a List of Records that have <varclass="field">[[Key]]</var> and <varclass="field">[[Elements]]</var> fields), <var>key</var> (an ECMAScript language value), and <var>value</var> (an ECMAScript language value) and returns <emu-const>unused</emu-const>. Itperformsthefollowingstepswhen called:</p>
2757
-
<emu-alg><ol><li>For each Record { <varclass="field">[[Key]]</var>, <varclass="field">[[Elements]]</var>} <var>g</var>of<var>groups</var>, do<ol><li>If SameValue(<var>g</var>.<varclass="field">[[Key]]</var>, <var>key</var>) is <emu-val>true</emu-val>, then<ol><li>Assert: exactly one element of<var>groups</var> meets this criteria.</li><li>Append <var>value</var> to <var>g</var>.<varclass="field">[[Elements]]</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></li></ol></li><li>Let <var>group</var> betheRecord { <varclass="field">[[Key]]</var>:<var>key</var>, <varclass="field">[[Elements]]</var>: « <var>value</var> » }.</li><li>Append <var>group</var> to <var>groups</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
2757
+
<emu-alg><ol><li>For each Record { <varclass="field">[[Key]]</var>, <varclass="field">[[Elements]]</var> } <var>g</var>of<var>groups</var>, do<ol><li>If SameValue(<var>g</var>.<varclass="field">[[Key]]</var>, <var>key</var>) is <emu-val>true</emu-val>, then<ol><li>Assert: exactly one element of<var>groups</var> meets this criteria.</li><li>Append <var>value</var> to <var>g</var>.<varclass="field">[[Elements]]</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></li></ol></li><li>Let <var>group</var> betheRecord { <varclass="field">[[Key]]</var>:<var>key</var>, <varclass="field">[[Elements]]</var>: « <var>value</var> » }.</li><li>Append <var>group</var> to <var>groups</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
0 commit comments