1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 02:27:43 +00:00

LibJS: Add Array.prototype.reverse

This commit is contained in:
Kesse Jones 2020-04-20 10:39:39 -03:00 committed by Andreas Kling
parent e35219b5ce
commit df6696f576
3 changed files with 54 additions and 0 deletions

View file

@ -54,6 +54,7 @@ ArrayPrototype::ArrayPrototype()
put_native_function("concat", concat, 1);
put_native_function("slice", slice, 2);
put_native_function("indexOf", index_of, 1);
put_native_function("reverse", reverse, 0);
put("length", Value(0));
}
@ -343,4 +344,25 @@ Value ArrayPrototype::index_of(Interpreter& interpreter)
return Value(-1);
}
Value ArrayPrototype::reverse(Interpreter& interpreter)
{
auto* array = array_from(interpreter);
if (!array)
return {};
if (array->elements().size() == 0)
return array;
Vector<Value> array_reverse;
array_reverse.ensure_capacity(array->elements().size());
for (ssize_t i = array->elements().size() - 1; i >= 0; --i)
array_reverse.append(array->elements().at(i));
array->elements() = move(array_reverse);
return array;
}
}

View file

@ -51,5 +51,6 @@ private:
static Value concat(Interpreter&);
static Value slice(Interpreter&);
static Value index_of(Interpreter&);
static Value reverse(Interpreter&);
};
}