P粉7885713162023-08-24 00:43:22
2019 年更新:這個答案來自 2008 年(11 歲了!),與現代 JS 的使用無關。承諾的效能改進是基於當時瀏覽器中完成的基準測試。它可能與現代 JS 執行上下文無關。如果您需要簡單的解決方案,請尋找其他答案。如果您需要最佳效能,請在相關執行環境中為自己進行基準測試。
正如其他人所說,透過陣列迭代可能是最好的方法,但它已被證明,遞減的while
循環是JavaScript 中最快的迭代方式。因此,您可能需要如下重寫程式碼:
function contains(a, obj) { var i = a.length; while (i--) { if (a[i] === obj) { return true; } } return false; }
當然,你也可以擴充Array原型:
Array.prototype.contains = function(obj) { var i = this.length; while (i--) { if (this[i] === obj) { return true; } } return false; }
現在您可以簡單地使用以下內容:
alert([1, 2, 3].contains(2)); // => true alert([1, 2, 3].contains('2')); // => false
P粉0769873862023-08-24 00:14:12
現代瀏覽器有 Array#includes
,它完全做到了這一點,並且受到IE 之外的所有人的廣泛支持:
console.log(['joe', 'jane', 'mary'].includes('jane')); // true