提交 4ed2d6b1 authored 作者: ch's avatar ch

111

上级 522ae882
......@@ -9,7 +9,7 @@ function findLinkEntities(contentBlock, callback, contentState) {
const entityKey = character.getEntity();
return entityKey !== null && contentState.getEntity(entityKey).getType() === 'LINK';
},
function() {
function () {
console.log(arguments);
callback(...arguments);
},
......@@ -121,14 +121,16 @@ export function preHandle(values) {
values[key][k][xxx[i]] = values[key][j][i];
}
}
}
if (childObj[j] != null) {
if (childObj[j] instanceof moment) {
values[key][k][j] = values[key][k][j].valueOf();
} else if (childObj[j] instanceof Date) {
values[key][k][j] = values[key][k][j].valueOf();
} else if (childObj[j] instanceof Boolean) {
values[key][k][j] = values[key][k][j] ? 0 : 1;
delete values[key][k][j];
} else {
if (childObj[j] != null) {
if (childObj[j] instanceof moment) {
values[key][k][j] = values[key][k][j].valueOf();
} else if (childObj[j] instanceof Date) {
values[key][k][j] = values[key][k][j].valueOf();
} else if (childObj[j] instanceof Boolean) {
values[key][k][j] = values[key][k][j] ? 0 : 1;
}
}
}
}
......@@ -145,46 +147,46 @@ export function preHandle(values) {
* 深拷贝函数 一站式使用
* */
export function deepCopy(obj, parent = null) {
if (React.isValidElement(obj)) {
return React.cloneElement(obj);
}
if (['boolean', 'string', 'number'].indexOf(typeof obj) > -1 || !obj) {
return obj;
}
let result;
if (obj.constructor === Array) {
result = [];
} else {
result = {};
}
let keys = Object.keys(obj),
key = null,
temp = null,
_parent = parent;
// 该字段有父级则需要追溯该字段的父级
while (_parent) {
// 如果该字段引用了它的父级则为循环引用
if (_parent.originalParent === obj) {
// 循环引用直接返回同级的新对象
return _parent.currentParent;
}
_parent = _parent.parent;
}
for (let i = 0; i < keys.length; i++) {
key = keys[i];
temp = obj[key];
if(temp && moment.isMoment(temp)){
result[key] = temp.clone();
}else if (temp && typeof temp === 'object') { // 如果字段的值也是一个对象
// 递归执行深拷贝 将同级的待拷贝对象与新对象传递给 parent 方便追溯循环引用
result[key] = deepCopy(temp, {
originalParent: obj,
currentParent: result,
parent: parent,
});
} else {
result[key] = temp;
}
}
return result;
if (React.isValidElement(obj)) {
return React.cloneElement(obj);
}
if (['boolean', 'string', 'number'].indexOf(typeof obj) > -1 || !obj) {
return obj;
}
let result;
if (obj.constructor === Array) {
result = [];
} else {
result = {};
}
let keys = Object.keys(obj),
key = null,
temp = null,
_parent = parent;
// 该字段有父级则需要追溯该字段的父级
while (_parent) {
// 如果该字段引用了它的父级则为循环引用
if (_parent.originalParent === obj) {
// 循环引用直接返回同级的新对象
return _parent.currentParent;
}
_parent = _parent.parent;
}
for (let i = 0; i < keys.length; i++) {
key = keys[i];
temp = obj[key];
if (temp && moment.isMoment(temp)) {
result[key] = temp.clone();
} else if (temp && typeof temp === 'object') { // 如果字段的值也是一个对象
// 递归执行深拷贝 将同级的待拷贝对象与新对象传递给 parent 方便追溯循环引用
result[key] = deepCopy(temp, {
originalParent: obj,
currentParent: result,
parent: parent,
});
} else {
result[key] = temp;
}
}
return result;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论