/
eb
/
Surf
Обзор
Документация
Войти
/
eb
/
Surf
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/es5-ext/object/copy-deep.js
35 строк
934 B
EvgeniyBudaev
Initial commit
17 фев 2020, 09:02
17 фев 2020, 09:02
bb6f06f
Код
Авторство
О чём код?
"use strict"; var forEach = require("./for-each") , isPlainObject = require("./is-plain-object") , ensureValue = require("./valid-value") , isArray = Array.isArray; var copyValue = function (value, ancestors, ancestorsCopy) { var mode; if (isPlainObject(value)) mode = "object"; else if (isArray(value)) mode = "array"; if (!mode) return value; var copy = ancestorsCopy[ancestors.indexOf(value)]; if (copy) return copy; copy = mode === "object" ? {} : []; ancestors.push(value); ancestorsCopy.push(copy); if (mode === "object") { forEach(value, function (item, key) { copy[key] = copyValue(item, ancestors, ancestorsCopy); }); } else { value.forEach(function (item, index) { copy[index] = copyValue(item, ancestors, ancestorsCopy); }); } ancestors.pop(); ancestorsCopy.pop(); return copy; }; module.exports = function (source) { return copyValue(ensureValue(source), [], []); };