猿问

查找条目是否在JavaScript数组中的最佳方法?

查找条目是否在JavaScript数组中的最佳方法?

如果一个对象在数组中,那么最好的方法是什么?

这是我所知道的最好的方法:

function include(arr, obj) {
    for(var i=0; i<arr.length; i++) {
        if (arr[i] == obj) return true;
    }}include([1,2,3,4], 3); // trueinclude([1,2,3,4], 6); // undefined


POPMUISE
浏览 459回答 3
3回答

鸿蒙传说

从ECMAScript 2016开始,您可以使用includes()arr.includes(obj);如果您想支持IE或其他旧浏览器:function&nbsp;include(arr,obj)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(arr.indexOf(obj)&nbsp;!=&nbsp;-1);}编辑:但这在IE6、7或8上不起作用。最好的解决办法是自己定义它,如果它不存在的话:莫兹拉(ECMA-262)版本:&nbsp;&nbsp;if&nbsp;(!Array.prototype.indexOf) &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array.prototype.indexOf&nbsp;=&nbsp;function(searchElement&nbsp;/*,&nbsp;fromIndex&nbsp;*/) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;"use&nbsp;strict"; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this&nbsp;===&nbsp;void&nbsp;0&nbsp;||&nbsp;this&nbsp;===&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;TypeError(); &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;t&nbsp;=&nbsp;Object(this); &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;len&nbsp;=&nbsp;t.length&nbsp;>>>&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(len&nbsp;===&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1; &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;n&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(arguments.length&nbsp;>&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;Number(arguments[1]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(n&nbsp;!==&nbsp;n) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(n&nbsp;!==&nbsp;0&nbsp;&&&nbsp;n&nbsp;!==&nbsp;(1&nbsp;/&nbsp;0)&nbsp;&&&nbsp;n&nbsp;!==&nbsp;-(1&nbsp;/&nbsp;0)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;(n&nbsp;>&nbsp;0&nbsp;||&nbsp;-1)&nbsp;*&nbsp;Math.floor(Math.abs(n)); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(n&nbsp;>=&nbsp;len) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1; &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;k&nbsp;=&nbsp;n&nbsp;>=&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;Math.max(len&nbsp;-&nbsp;Math.abs(n),&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(;&nbsp;k&nbsp;<&nbsp;len;&nbsp;k++) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k&nbsp;in&nbsp;t&nbsp;&&&nbsp;t[k]&nbsp;===&nbsp;searchElement) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;k; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1; &nbsp;&nbsp;};}丹尼尔·詹姆斯版本:if&nbsp;(!Array.prototype.indexOf)&nbsp;{ &nbsp;&nbsp;Array.prototype.indexOf&nbsp;=&nbsp;function&nbsp;(obj,&nbsp;fromIndex)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(fromIndex&nbsp;==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fromIndex&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(fromIndex&nbsp;<&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fromIndex&nbsp;=&nbsp;Math.max(0,&nbsp;this.length&nbsp;+&nbsp;fromIndex); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;fromIndex,&nbsp;j&nbsp;=&nbsp;this.length;&nbsp;i&nbsp;<&nbsp;j;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this[i]&nbsp;===&nbsp;obj) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;i; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1; &nbsp;&nbsp;};}甾醇酸版本:Array.prototype.hasObject&nbsp;=&nbsp;( &nbsp;&nbsp;!Array.indexOf&nbsp;?&nbsp;function&nbsp;(o) &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;l&nbsp;=&nbsp;this.length&nbsp;+&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(l&nbsp;-=&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this[l&nbsp;-&nbsp;1]&nbsp;===&nbsp;o) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;}&nbsp;:&nbsp;function&nbsp;(o) &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(this.indexOf(o)&nbsp;!==&nbsp;-1); &nbsp;&nbsp;});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答