• 前端小功能:数组对象是否相等


    前端小功能:数组对象是否相等,是否一致。
    JS 判断两个数组是否相同

    JSON.stringify([1,2,3].sort()) === JSON.stringify([3,2,1].sort()); //true

     JS 判断两个数组对象是否相等

    花了一天的时间,去实现两个对象是否相等的情况,具体代码如下:

    export function isEqual(a, b) {
      let Equal = true
      if((typeof a) === 'object' && (typeof b) === 'object'){
        let aProps = Object.getOwnPropertyNames(a);
        let bProps = Object.getOwnPropertyNames(b);
        if (aProps.length !== bProps.length) {
            Equal = false;
            return Equal
        }
        // eslint-disable-next-line @typescript-eslint/prefer-for-of
        for (let i = 0; i < aProps.length; i++) {
          let propName = aProps[i]
          let propA = a[propName]
          let propB = b[propName]
          if((typeof propA) === 'object' && (typeof propB) === 'object'){
            if(!isEqual(propA, propB)){
              Equal = false;
              return Equal
            }
          }else if(propA !== propB){
            Equal = false
            return Equal
          }
        }
      }else if(a !== b){
        Equal = false
        return Equal
      }
      return Equal
    }

    然后花了一个小时,去查一下其他的库。

    开箱即用:https://www.lodashjs.com/docs/lodash.isEqual

    执行深比较来确定两者的值是否相等。

    **注意: **这个方法支持比较 arrays, array buffers, booleans, date objects, error objects, maps, numbers, Object objects, regexes, sets, strings, symbols, 以及 typed arrays. Object 对象值比较自身的属性,不包括继承的和可枚举的属性。 不支持函数和DOM节点比较。


    发现lodash非常的好。建议前端必须掌握,减少50%数据处理的时间,如果自己想了解原理的话,自己撸一波还是很好的。

    lodash 中文文档: https://www.lodashjs.com/

    smallbore,world
  • 相关阅读:
    不容易系列之一(错排)
    找新朋友(欧拉函数)
    二分查找
    快速排序(分治)
    归并排序(分治)
    畅通工程(并查集)
    A Knight's Journey (DFS)
    Network Saboteur (DFS)
    Oil Deposits(油田)(DFS)
    Dungeon Master (三维BFS)
  • 原文地址:https://www.cnblogs.com/bore/p/14137564.html
Copyright © 2020-2023  润新知