JS中数组搜索中include和hasOwnProperty之间的区别

时间:2018-10-17 14:59:37

标签: javascript arrays search

在时间和空间复杂度方面,includeshasOwnProperty在JS中Array中搜索元素有什么区别?

两者都可用于查找元素是否在Array中存在。

3 个答案:

答案 0 :(得分:0)

hasOwnProperty返回一个布尔值,该布尔值指示您所调用的对象是否具有带有参数名称的属性,并且与所有人一样。includes()方法确定字符串是否包含指定的字符串。如果字符串包含字符,include方法将返回true,否则返回false。另外,它是区分大小写的。

最后,我认为问题是基于一个错误的假设。

答案 1 :(得分:-1)

  

两者均可用于查找数组中是否存在元素。

不正确。 includes检查数组中的任何元素是否与参数匹配。 hasOwnProperty检查 Array是否具有与参数匹配的属性

$ const array = ['test', 'another'];
$ array.includes('test')
true
$ array.hasOwnProperty('test')
false
$ array.includes('length')
false
$ array.hasOwnProperty('length')
true

您会发现includeshasOwnProperty不会返回相同的结果,因此比较效率毫无意义。

答案 2 :(得分:-2)

includes正在检查您的数组是否包含指定的值,而hasOwnProperty检查您的数组是否在其__proto__中指定了属性名称:

const arr = [1, 2, 3];
arr.prop = 'Some prop';

arr.includes(2); // -> true
arr.hasOwnProperty(2); // -> false
arr.includes('prop'); // -> false
arr.hasOwnProperty('prop'); // -> true