diff --git a/lib/types/core_array.js b/lib/types/core_array.js index 324e04ad245..b298acf4664 100644 --- a/lib/types/core_array.js +++ b/lib/types/core_array.js @@ -457,8 +457,9 @@ class CoreMongooseArray extends Array { * @memberOf MongooseArray */ - includes(obj) { - return this.indexOf(obj) !== -1; + includes(obj, fromIndex) { + const ret = this.indexOf(obj, fromIndex); + return ret !== -1; } /** @@ -471,11 +472,14 @@ class CoreMongooseArray extends Array { * @memberOf MongooseArray */ - indexOf(obj) { + indexOf(obj, fromIndex) { if (obj instanceof ObjectId) { obj = obj.toString(); } - for (let i = 0, len = this.length; i < len; ++i) { + + fromIndex = fromIndex == null ? 0 : fromIndex; + const len = this.length; + for (let i = fromIndex; i < len; ++i) { if (obj == this[i]) { return i; } diff --git a/test/types.array.test.js b/test/types.array.test.js index 85d5c49732d..449634dd3ae 100644 --- a/test/types.array.test.js +++ b/test/types.array.test.js @@ -162,6 +162,8 @@ describe('types array', function() { assert.equal(user.pets.includes(tobi.id), true); assert.equal(user.pets.includes(loki.id), true); assert.equal(user.pets.includes(jane.id), true); + assert.equal(user.pets.includes(tobi.id, 1), false); + assert.equal(user.pets.includes(loki.id, 1), true); done(); }); });