njs_array_prototype_fill(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
njs_index_t unused)
{
- nxt_int_t i, start, end, length;
- njs_array_t *array;
+ nxt_int_t i, start, end, length;
+ njs_array_t *array;
+ const njs_value_t *value;
vm->retval = args[0];
- if (nargs < 2 || !njs_is_array(&args[0])) {
+ if (!njs_is_array(&args[0])) {
return NXT_OK;
}
}
}
+ value = njs_arg(args, nargs, 1);
+
for (i = start; i < end; i++) {
- array->start[i] = args[1];
+ array->start[i] = *value;
}
return NXT_OK;
{ nxt_string("[1,2,3].fill({a:\"b\"}, 1, 2);"),
nxt_string("1,[object Object],3") },
+ { nxt_string("Array(3).fill().reduce(function(a, x)"
+ "{ return a + (x === undefined); }, 0)"),
+ nxt_string("3") },
+
{ nxt_string("var a = [];"
"a.filter(function(v, i, a) { return v > 1 })"),
nxt_string("") },