精华内容
下载资源
问答
  • js判断数组对象值是否相等
    千次阅读
    2021-03-09 19:16:39

    简单实现了JS实现判断数组两个数组或对象是否相等,可以直接引用。

    //type Object or Array
    isSameData(existData,newData,type = "Object"){
        if(type ===  "Array"){
            if(Object.prototype.toString.call(existData) != "[object Array]" || Object.prototype.toString.call(newData) != "[object Array]"){
                throw new Error("At least one of the inputs not an array");
            }
    
            if(existData.length != newData.length){
                return false;
            }
        }else{
            if(!(existData instanceof Object && newData instanceof Object)){
                throw new Error("At least one of the inputs not an Object");
            }
        }
    
        for (const key in existData) {
            if (Object.prototype.hasOwnProperty.call(newData, key)) {
                if(existData[key] instanceof Array && newData[key] instanceof Array){
                    try{
                        if(!this.isSameData(existData[key], newData[key],"Array")){
                            return false;
                        }
                    }catch{
                        return false;
                    }
                }else if(existData[key] instanceof Object && newData[key] instanceof Object){
                    try{
                        if(!this.isSameData(existData[key],newData[key],"Object")){
                            return false;
                        }
                    }catch{
                        return false;
                    }
    
                }else if(existData[key] != newData[key]){
                    return false;
                }
            }else{
                return false;
            }
        }
    
        return true;
    }
    
    更多相关内容
  • 每次往数组里插入时,都要判断之前选中的数组里面是否已经存在了这个数组对象 arrayEquals(array1, array2) { // if array1 or array2 is a falsy value, return if (!array1 || !array2) return false; // ...

    如何判断两个数组是否完全相等,如何判断两个对象是否完全相等


    记录一下~
    也是sku库存配置中用到的
    每次往数组里插入值时,都要判断之前选中的数组里面是否已经存在了这个数组对象

          arrayEquals(array1, array2) {
            // if array1 or array2 is a falsy value, return
            if (!array1 || !array2)
              return false;
            // compare lengths - can save a lot of time
            if (array1.length != array2.length)
              return false;
            for (var i = 0, l = array1.length; i < l; i++) {
              // Check if we have nested arrays
              if (array1[i] instanceof Array && array2[i] instanceof Array) {
                // recurse into the nested arrays
                if (!this.arrayEquals(array1[i], array2[i]))
                  return false;
              } else if (array1[i] instanceof Object && array2[i] instanceof Object) {
                // 比较含有的对象是否相等
                if (!this.objectEquals(array1[i], array2[i]))
                  return false;
              } else if (array1[i] != array[i]) {
                // Warning - two different object instances will never be equal: {x:20} != {x:20}
                return false;
              }
            }
            return true;
          },
          objectEquals(object1, object2) {
            //For the first loop, we only check for types
            for (let propName in object1) {
              //Check for inherited methods and properties - like .equals itself
              //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
              //Return false if the return value is different
              if (object1.hasOwnProperty(propName) != object2.hasOwnProperty(propName)) {
                return false;
              }
              //Check instance type
              else if (typeof object1[propName] != typeof object2[propName]) {
                //Different types => not equal
                return false;
              }
            }
            //Now a deeper check using other objects property names
            for (let propName in object2) {
              //We must check instances anyway, there may be a property that only exists in object2
              //I wonder, if remembering the checked values from the first loop would be faster or not
              if (object1.hasOwnProperty(propName) != object2.hasOwnProperty(propName)) {
                return false;
              } else if (typeof object1[propName] != typeof object2[propName]) {
                return false;
              }
              //If the property is inherited, do not check any more (it must be equa if both objects inherit it)
              if (!object1.hasOwnProperty(propName))
                continue;
    
              //Now the detail check and recursion
    
              //This returns the script back to the array comparing
              /**REQUIRES Array.equals**/
              if (object1[propName] instanceof Array && object2[propName] instanceof Array) {
                // recurse into the nested arrays
                if (!this.arrayEquals(object1[propName], object2[propName]))
                  return false;
              } else if (object1[propName] instanceof Object && object2[propName] instanceof Object) {
                // recurse into another objects
                if (!this.objectEquals(object1[propName], object2[propName]))
                  return false;
              }
              //Normal value comparison for strings and numbers
              else if (object1[propName] != object2[propName]) {
                return false;
              }
            }
            //If everything passed, let's say YES
            return true;
          }
    
    展开全文
  • 判断数组对象属性值是否相等

    千次阅读 2020-03-11 12:25:15
    因项目的要求,返回来的所有都要,所以使用数组的filter,indexOf方法并不能达到预期的要求; 解决办法: 判断进入else里面就是重复的; 最后得到的效果如下: ![在这里插入有防盗链机制,建议将图片保存下来...

    最近做一个文件上传批量导入数据功能,但因后台返回的数据没做属性值重复处理,需要前端处理:
    返回的数据结构如下:
    在这里插入图片描述
    因项目的要求,返回来的所有值都要,所以使用数组的filter,indexOf方法并不能达到预期的要求;
    解决办法:
    在这里插入图片描述
    判断进入else里面就是重复的值;
    最后得到的效果如下:
    ![在这里插入有防盗链机制,建议将图片保存下来直接上传(img-(在这里插入图片描述)]](https://img-blog.csdnimg.cn/20200311122328297.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZhbmtzZQ==,size_16,color_FFFFFF,t_70)

    展开全文
  • 一、some():用于检测数组中的元素是否满足指定条件 some方法会依次执行数组的每个元素; 如果有一个元素满足条件,则表达式返回true, 剩余的元素不会再执行检测 ...1、判断数组: var arr = [0,0,0,...

    一、some():用于检测数组中的元素是否满足指定条件

    some方法会依次执行数组的每个元素;

    • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
    • 如果没有满足条件的元素,则返回false

    二、every():用于检测数组所有元素是否都符合指定条件

    every和some正好相反:

    • 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
    • 如果所有元素都满足条件,则返回 true。

    1、判断数组:

    var arr = [0,0,0,7];
    
    //判断数组中的每一项是否都等于7
    var everyResult = arr.every( item => item === 7 );
    
    //判断数组中的一项是否等于7
    var someResult = arr.some( item => item === 7 );
    
    console.log(everyResult ); //结果:false
    console.log(someResult );//结果: true
    

    2、判断对象数组:

    var arr = [
      { name: "苹果", price: 16 },
      { name: "橘子", price: 8 },
      { name: "香蕉", price: 4 },
      { name: "西瓜", price: 12 }
    ];
    
    //判断数组中每一条数据的price是否都大于10
    var everyResult = arr.every(function(item) {
      return item.price > 10;
    });
    
    //判断数组中是否有一条数据的price大于10
    var someResult = arr.some(function(item) {
      return item.price > 10;
    });
    
    console.log(everyResult); //结果:false
    console.log(someResult);//结果: true

    以上判断条件是知道具体值的,但我想判断数组的值是否相同:

    function isAllEqual(array) {
        if (array.length > 0) {
            return !array.some(function(value, index) {
                return value !== array[0];
            });
        } else {
            return true;
        }
    }
    
    
    var arr = [0, 0 , 1 , 7];
    isAllEqual(arr); //false
    
    var arr = [0, 0 , 0 , 0];
    isAllEqual(arr); //true
    

    ES6中Set使用,判断数组里是否有相同的元素:https://blog.csdn.net/qq_40015157/article/details/117929652

     

     我想判断每条数据里的属性值是否相同:

    var arr = [
      { name: "苹果", price: 16 },
      { name: "橘子", price: 8 },
      { name: "香蕉", price: 4 },
      { name: "西瓜", price: 12 }
    ];
    
    var list = [];
    
    for(let i = 0;i< arr.length;i++) {
        list.push(arr[i].price)
    }
    
    console.log(isAllEqual(list)); //false
    
    
    var arr = [
      { name: "苹果", price: 16 },
      { name: "橘子", price: 16 },
      { name: "香蕉", price: 16 },
      { name: "西瓜", price: 16 }
    ];
    //修改下数组 打印true

    三、js JSON.stringify 比较两个对象数组是否相同

    https://blog.csdn.net/qq_40015157/article/details/112790147

    四、js 比较两个数组是否相同

    https://blog.csdn.net/qq_40015157/article/details/110792580

    展开全文
  • b是否相等来确定内容有没有进行过修改,如果数组不一样就是修改过要进行提示,然后我下意识用===来判断,报错后才意识到数组是引用数据类型,不是基本数据类型,所以不能根据判断对象的比较均是引用的比较,...
  • JavaScript--判断数组里面的元素相等

    千次阅读 2021-07-18 14:43:02
    1.判断数组里面的元素相等 今天本来打算使用 === 或者 == 来判断 两个数组里面的元素是否相等,但是结果都为flase, 原因很简单,数组是引用类型,直接比较相等是比较的内存地址,所有很明显不相等 let arr1 = [1,...
  • 本文实例讲述了JS判断两个数组对象是否相同的方法。分享给大家供大家参考,具体如下: JS 判断两个数组是否相同 要判断2个数组是否相同,首先要把数组进行排序,然后转换成字符串进行比较。 JSON.stringify([1,2,...
  • js判断数组相等

    2022-07-22 11:42:15
    判断js是否相等
  • js 判断数组中的值是否相等

    千次阅读 2019-10-02 19:55:23
    function isAllEqual(array) { if (array.length > 0) { return !array.some(function...
  • 判断数组中每个对象同一属性值是否相同,相同通过,反之不通过 方法一: arr.every((e) => e.checked === false) ? console.log('通过') : console.log('不通过'); // 不通过 方法二: arr.find((e) => e.checked =...
  • 闲暇无聊中翻阅vuejs的源码,在里边发现了一个比较强壮的对比方法连数组对象都能正确对比;后边还有可以获取某个在数据中是否存在,一个比较强壮的indexOf,如果对你有用欢迎点赞收藏和分享。 话不多说,直接上...
  • * JS判断两个数组是否相等 * @param {Array} arr1 * @param {Array} arr2 * @returns {boolean} 返回true 或 false */ arrayEqual (arr1, arr2) { if (arr1 === arr2) return true; if (arr1.length != arr2...
  • 如何比较两个数组/对象或数组对象是否相等? 我们可以通过使用JSON.stringify()方法来转换比较 具体示例: 1.比较两个数组(数组中是对象)是否全等: let objArr = [{ nema: "123", age: "19" }, { ...
  • 需求背景:有两个对象数组A和B,当B数组中某个对象的属性和A数组对象属性相同时,需要将A数组的当前对象添加一个新属性。 let A = [{projectId:"1",projectName:"项目一",status:"0"},{projectId:"2",...
  • js中是不能直接用“==”或者“===”来计算两个数组是否相等的,那么就需要对数组进行比较; 二、次解决方案 对于比较两个数组次要的方法有如下几种,为什么说是次要解决方案呢?因为它不能真正称之为对两个...
  • 判断数组元素
  • const type2=newlist.some(r=>newlist.filter(r1=>r1.qixian!==r.qixian).length>=1) console.log(type2); if(type2==true){ console.log(type2);... this.qixian='1' } 返回true,说明有不同 返回false,说明全都相等
  • JavaScript判断两个数组是否相等

    千次阅读 2022-05-20 17:27:20
    对于对象来说,== 比较的是两个对象是否为同一个对象数组属于对象类型,尽管数组元素是相同的,但这两个数组属于不同的对象,所以 == 比较为false。 2、数组简单比较 如果数组里的元素是标量,非object类型,可以...
  • js判断数组是否存在某个对象/判断数组里的对象是否存在某个 的五种方法 逻辑及应用场景(购物车)
  • 判断数组对象的某一属性是否全部完全相同。
  • js如何判断两个数组是否相等

    千次阅读 2021-02-25 16:28:54
    今天在实现一个需求的时候,需要去判断两个数组是否相等,看似简单的问题,实则还挺复杂。 首先我们知道数组是引用数据类型,在==或者===比较时,比较的是其地址,所以[1,2] == [1,2] [1,2] === [1,2] 二者输出的...
  • 本来只打算写一个判断数组的方法,结果发现数组里可能有对象,还得判断两个对象是否相等,然而对象里面也有可能有数组,所以两个方法相辅相成,缺一不可(aa:判断数组,bb:判断对象,本人英语水平有限就不用单词了...
  • var arr = [ { name: 张三, sum: 2 }, { name: 张三, sum: 7 }, { name: 李四, sum: 4 }, { name: 李四, sum: 5 }, { name: 李四, sum: 6 }, { name: 王五, sum: 4 }, ] 判断 name 是否相同 相同 sum 就...
  • 如何判断一个数组中所有对象的某个属性全部相等? 这里会用到ES6中的every: let arrObj=[ {checked:false,name:'ccc'}, {checked:false,name:'ccc'}, {checked:false,name:'ccc'} ] if(arrObj.every(item=>...
  • 主要介绍了JS判断两个对象内容是否相等的方法,结合具体实例形式分析了javascript针对字符串、数组对象的相关判断技巧,需要的朋友可以参考下
  • 我们在项目开发过程中,经常会要检查一个数组(无序)是否包含一个特定的?这是一个在JavaScript中经常用到的并且非常有用的操作。下面给出几种实现方式。方式一:利用循环这种方式是比较老...
  • js判断 对象数组是否完全一样

    千次阅读 2019-05-14 21:13:07
    <script> function diff(obj1, obj2) { var o1 = obj1 instanceof Object; var o2 = obj2 instanceof Object; if (!o1 || !o2) {/* 判断不是对象 */ return obj1 === obj...
  • vue js 判断两个数组是否相等

    千次阅读 2022-01-11 10:30:12
    数组:引用数据类型,存放在堆里面,所以直接判断两个数组是否相等得到的结果false var arr = [1, 2, 3] var arr1 = [1, 2, 3] console.log(arr == arr1); //false 解决方案: 1.toString() var arr = [1, 2, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,747
精华内容 14,298
热门标签
关键字:

js判断数组对象值是否相等