'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; | |
}; |