/** * 用于递归判断两个对象是否一致,以区分是否修改 * @param {*} oldObj * @param {*} newObj * 返回false:不相等 */export function objsDiffer(oldObj, newObj){ let aProps = Object.getOwnPropertyNames(oldObj); let bProps = Object.getOwnPropertyNames(newObj); if (aProps.length != bProps.length) { return false; } //return 时for中断 for (var i = 0; i < aProps.length; i++) { let propName = aProps[i]; let propA = oldObj[propName]; let propB = newObj[propName]; if (propA == propB) { if ( propA instanceof Object ) { if (!objsDiffer(propA, propB)) { return false } } else if ( propA instanceof Array && propB instanceof Array ) { if( propA.length != propB.length ){ return false } let tem = arrDiffer(propA, propB) if(!tem) return false; } } else { return false } } return true;}/** * 返回false 表示不相等 */export function arrDiffer(oldObj, newObj){ for (var i = 0; i < oldObj.length; i++) { let propA = oldObj[propName]; let propB = newObj[propName]; if (propA == propB) { if ( propA instanceof Object) { if (!objsDiffer(propA, propB)) { return false } } else if ( propA instanceof Array && propB instanceof Array ) { if( propA.length != propB.length ){ return false } let temp = arrDiffer(propA, propB) if(!temp) return false } } else { return false } } return true}复制代码