zoukankan      html  css  js  c++  java
  • javascript对象的深度比较方法

    /**
     * 深度比较两个对象是否相等
     * @method compare
     * @param oldData 需要比较的值
     * @param newData 需要比较的值
     * @return {Boolean} 判断后的结果
     */
    export const compare = function (oldData, newData) {
      if (oldData === newData) return true;
      const arg = Array.prototype.slice.call(arguments);
      const objCall = (obj, string) => Object.prototype.toString.call(obj) === `[object ${string}]`;
      if (arg.every(obj => objCall(obj, 'Object')) && Object.keys(oldData).length === Object.keys(newData).length) {
        for (const key in oldData) { if (oldData.hasOwnProperty(key) && !compare(oldData[key], newData[key])) return false; }
      } else if (arg.every(obj => objCall(obj, 'Array')) && oldData.length === newData.length) {
        for (const key in oldData) { if (!compare(oldData[key], newData[key])) return false; }
      } else {
        return false;
      }
      return true;
    };

    调用:

    const obj = {};

    const arr = [];

    const result = compare(obj,arr);  // false;

    对象深度比较,简单又好吃;

  • 相关阅读:
    文件操作-图片的拷贝
    UIBarbuttonItem
    pod 'Masonry' 自动布局
    文件操作——图片保存到本地
    IOS简单的定位
    UITapGestureRecognizer+动画
    KVO
    UIScrollView
    UITextField的使用
    1228.1——计算器(未使用MVC设计模式)
  • 原文地址:https://www.cnblogs.com/bomdeyada/p/14389028.html
Copyright © 2011-2022 走看看