此頁面由社群從英文翻譯而來。了解更多並加入 MDN Web Docs 社群。
Array.prototype.includes()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年8月.
includes() 方法會判斷陣列是否包含特定的元素,並以此來回傳true 或false。
In this article
嘗試一下
const array1 = [1, 2, 3];console.log(array1.includes(2));// Expected output: trueconst pets = ["cat", "dog", "bat"];console.log(pets.includes("cat"));// Expected output: trueconsole.log(pets.includes("at"));// Expected output: false語法
arr.includes(searchElement[, fromIndex])
參數
searchElement要搜尋的元素。
fromIndex選擇性要於此陣列中開始搜尋
searchElement的位置。如為負數值,則自array.length + fromIndex開始向後搜尋。預設值為 0。
回傳值
布林值(Boolean)。
範例
[1, 2, 3].includes(2); // true[1, 2, 3].includes(4); // false[1, 2, 3].includes(3, 3); // false[1, 2, 3].includes(3, -1); // true[1, 2, NaN].includes(NaN); // truefromIndex 大於或等於陣列長度
如果fromIndex大於或等於陣列長度, 會回傳false. 此陣列將不會被搜尋.
var arr = ["a", "b", "c"];arr.includes("c", 3); // falsearr.includes("c", 100); // falseComputed index is less than 0
IffromIndex is negative, the computed index is calculated to be used as a position in the array at which to begin searching forsearchElement. If the computed index is less than 0, the entire array will be searched.
// array length is 3// fromIndex is -100// computed index is 3 + (-100) = -97var arr = ["a", "b", "c"];arr.includes("a", -100); // truearr.includes("b", -100); // truearr.includes("c", -100); // trueincludes() used as a generic method
includes() method is intentionally generic. It does not requirethis value to be an Array object, so it can be applied to other kinds of objects (e.g. array-like objects). The example below illustratesincludes() method called on the function'sarguments object.
(function () { console.log([].includes.call(arguments, "a")); // true console.log([].includes.call(arguments, "d")); // false})("a", "b", "c");Polyfill
// https://tc39.github.io/ecma262/#sec-array.prototype.includesif (!Array.prototype.includes) { Object.defineProperty(Array.prototype, "includes", { value: function (searchElement, fromIndex) { if (this == null) { throw new TypeError('"this" is null or not defined'); } // 1. Let O be ? ToObject(this value). var o = Object(this); // 2. Let len be ? ToLength(? Get(O, "length")). var len = o.length >>> 0; // 3. If len is 0, return false. if (len === 0) { return false; } // 4. Let n be ? ToInteger(fromIndex). // (If fromIndex is undefined, this step produces the value 0.) var n = fromIndex | 0; // 5. If n ≥ 0, then // a. Let k be n. // 6. Else n < 0, // a. Let k be len + n. // b. If k < 0, let k be 0. var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); function sameValueZero(x, y) { return ( x === y || (typeof x === "number" && typeof y === "number" && isNaN(x) && isNaN(y)) ); } // 7. Repeat, while k < len while (k < len) { // a. Let elementK be the result of ? Get(O, ! ToString(k)). // b. If SameValueZero(searchElement, elementK) is true, return true. if (sameValueZero(o[k], searchElement)) { return true; } // c. Increase k by 1. k++; } // 8. Return false return false; }, });}If you need to support truly obsolete JavaScript engines that don't supportObject.defineProperty, it's best not to polyfillArray.prototype methods at all, as you can't make them non-enumerable.
規範
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.includes> |