Buscar

_array-methods

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = require('./_ctx');
var IObject = require('./_iobject');
var toObject = require('./_to-object');
var toLength = require('./_to-length');
var asc = require('./_array-species-create');
module.exports = function (TYPE, $create) {
 var IS_MAP = TYPE == 1;
 var IS_FILTER = TYPE == 2;
 var IS_SOME = TYPE == 3;
 var IS_EVERY = TYPE == 4;
 var IS_FIND_INDEX = TYPE == 6;
 var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
 var create = $create || asc;
 return function ($this, callbackfn, that) {
 var O = toObject($this);
 var self = IObject(O);
 var f = ctx(callbackfn, that, 3);
 var length = toLength(self.length);
 var index = 0;
 var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
 var val, res;
 for (;length > index; index++) if (NO_HOLES || index in self) {
 val = self[index];
 res = f(val, index, O);
 if (TYPE) {
 if (IS_MAP) result[index] = res; // map
 else if (res) switch (TYPE) {
 case 3: return true; // some
 case 5: return val; // find
 case 6: return index; // findIndex
 case 2: result.push(val); // filter
 } else if (IS_EVERY) return false; // every
 }
 }
 return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
 };
};

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando