| 'use strict'; | |
| module.exports = function (arr, predicate, ctx) { | |
| if (typeof Array.prototype.findIndex === 'function') { | |
| return arr.findIndex(predicate, ctx); | |
| } | |
| if (typeof predicate !== 'function') { | |
| throw new TypeError('predicate must be a function'); | |
| } | |
| var list = Object(arr); | |
| var len = list.length; | |
| if (len === 0) { | |
| return -1; | |
| } | |
| for (var i = 0; i < len; i++) { | |
| if (predicate.call(ctx, list[i], i, list)) { | |
| return i; | |
| } | |
| } | |
| return -1; | |
| }; |