26 lines
		
	
	
		
			464 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			464 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| '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;
 | |
| };
 |