get-json-replacer-function.js 1008 B

1234567891011121314151617181920212223242526272829
  1. var uncurryThis = require('../internals/function-uncurry-this');
  2. var isArray = require('../internals/is-array');
  3. var isCallable = require('../internals/is-callable');
  4. var classof = require('../internals/classof-raw');
  5. var toString = require('../internals/to-string');
  6. var push = uncurryThis([].push);
  7. module.exports = function (replacer) {
  8. if (isCallable(replacer)) return replacer;
  9. if (!isArray(replacer)) return;
  10. var rawLength = replacer.length;
  11. var keys = [];
  12. for (var i = 0; i < rawLength; i++) {
  13. var element = replacer[i];
  14. if (typeof element == 'string') push(keys, element);
  15. else if (typeof element == 'number' || classof(element) == 'Number' || classof(element) == 'String') push(keys, toString(element));
  16. }
  17. var keysLength = keys.length;
  18. var root = true;
  19. return function (key, value) {
  20. if (root) {
  21. root = false;
  22. return value;
  23. }
  24. if (isArray(this)) return value;
  25. for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;
  26. };
  27. };