]> git.kaiwu.me - njs.git/commitdiff
Improved Array.prototype.includes().
authorDmitry Volyntsev <xeioex@nginx.com>
Wed, 27 Nov 2019 13:51:29 +0000 (16:51 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Wed, 27 Nov 2019 13:51:29 +0000 (16:51 +0300)
src/njs_array.c

index bf3dee56bf5ddf0a336cfff9c0d6480ee00c4ecd..1be358d0070f658eef776a40931130d98881cdd9 100644 (file)
@@ -1886,21 +1886,7 @@ njs_array_handler_includes(njs_vm_t *vm, njs_array_iterator_args_t *args,
         entry = njs_value_arg(&njs_value_undefined);
     }
 
-    if (njs_values_strict_equal(args->argument, entry)) {
-        njs_set_true(&vm->retval);
-
-        return 1;
-    }
-
-    return NJS_OK;
-}
-
-
-static njs_int_t
-njs_array_handler_includes_nan(njs_vm_t *vm, njs_array_iterator_args_t *args,
-    njs_value_t *entry, uint32_t n)
-{
-    if (njs_is_numeric(entry) && isnan(njs_number(entry))) {
+    if (njs_values_same_zero(args->argument, entry)) {
         njs_set_true(&vm->retval);
 
         return 1;
@@ -1953,17 +1939,9 @@ njs_array_prototype_includes(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     iargs.from = (uint32_t) from;
     iargs.to = length;
 
-    if (njs_is_number(iargs.argument) && isnan(njs_number(iargs.argument))) {
-        ret = njs_array_iterator(vm, &iargs, njs_array_handler_includes_nan);
-        if (njs_fast_path(ret == NJS_DECLINED)) {
-            return NJS_OK;
-        }
-
-    } else {
-        ret = njs_array_iterator(vm, &iargs, njs_array_handler_includes);
-        if (njs_fast_path(ret == NJS_DECLINED)) {
-            return NJS_OK;
-        }
+    ret = njs_array_iterator(vm, &iargs, njs_array_handler_includes);
+    if (njs_fast_path(ret == NJS_DECLINED)) {
+        return NJS_OK;
     }
 
 not_found: