mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 20:15:17 +00:00
LibJS: Call Array.prototype.findIndex() callback for empty elements
If the array value at the current index is empty, the callback will be called with undefined as value.
This commit is contained in:
parent
823cc7bc1c
commit
3152559422
Notes:
sideshowbarker
2024-07-19 07:13:02 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/31525594227 Pull-request: https://github.com/SerenityOS/serenity/pull/2003
3 changed files with 27 additions and 7 deletions
|
@ -489,12 +489,12 @@ Value ArrayPrototype::find_index(Interpreter& interpreter)
|
|||
auto array_size = array->elements().size();
|
||||
|
||||
for (size_t i = 0; i < array_size; ++i) {
|
||||
if (i >= array->elements().size())
|
||||
break;
|
||||
|
||||
auto value = array->elements().at(i);
|
||||
if (value.is_empty())
|
||||
continue;
|
||||
auto value = js_undefined();
|
||||
if (i < array->elements().size()) {
|
||||
value = array->elements().at(i);
|
||||
if (value.is_empty())
|
||||
value = js_undefined();
|
||||
}
|
||||
|
||||
MarkedValueList arguments(interpreter.heap());
|
||||
arguments.append(value);
|
||||
|
|
|
@ -23,6 +23,26 @@ try {
|
|||
assert(array.findIndex(value => value > 100) === -1);
|
||||
assert([].findIndex(value => value === 1) === -1);
|
||||
|
||||
var callbackCalled = 0;
|
||||
var callback = () => { callbackCalled++; };
|
||||
|
||||
[].findIndex(callback)
|
||||
assert(callbackCalled === 0);
|
||||
|
||||
[1, 2, 3].findIndex(callback);
|
||||
assert(callbackCalled === 3);
|
||||
|
||||
callbackCalled = 0;
|
||||
[1, , , "foo", , undefined, , ,].findIndex(callback);
|
||||
assert(callbackCalled === 8);
|
||||
|
||||
callbackCalled = 0;
|
||||
[1, , , "foo", , undefined, , ,].findIndex(value => {
|
||||
callbackCalled++;
|
||||
return value === undefined;
|
||||
});
|
||||
assert(callbackCalled === 2);
|
||||
|
||||
console.log("PASS");
|
||||
} catch (e) {
|
||||
console.log("FAIL: " + e);
|
||||
|
|
|
@ -17,7 +17,7 @@ try {
|
|||
callbackCalled++;
|
||||
a.pop();
|
||||
});
|
||||
assert(callbackCalled === 3);
|
||||
assert(callbackCalled === 5);
|
||||
|
||||
console.log("PASS");
|
||||
} catch (e) {
|
||||
|
|
Loading…
Add table
Reference in a new issue