1234567891011121314151617181920212223242526272829 |
- var uncurryThis = require('../internals/function-uncurry-this');
- var isArray = require('../internals/is-array');
- var isCallable = require('../internals/is-callable');
- var classof = require('../internals/classof-raw');
- var toString = require('../internals/to-string');
- var push = uncurryThis([].push);
- module.exports = function (replacer) {
- if (isCallable(replacer)) return replacer;
- if (!isArray(replacer)) return;
- var rawLength = replacer.length;
- var keys = [];
- for (var i = 0; i < rawLength; i++) {
- var element = replacer[i];
- if (typeof element == 'string') push(keys, element);
- else if (typeof element == 'number' || classof(element) == 'Number' || classof(element) == 'String') push(keys, toString(element));
- }
- var keysLength = keys.length;
- var root = true;
- return function (key, value) {
- if (root) {
- root = false;
- return value;
- }
- if (isArray(this)) return value;
- for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;
- };
- };
|