/**
* 验证两个object 是否相同
* @param {Object} obj [需要进行验证的数据1]
* @param {Object} newObj [需要进行验证的数据2]
*/
function objSame (obj,newObj) {
let bol = true;
if (Object.keys(obj).length != Object.keys(newObj).length) {
return false;
}
for(let key in obj) {
if ( obj[key] instanceof Object) {
bol = objSame(obj[key],newObj[key]);
if (!bol) {
break;
}
} else if ( obj[key] instanceof Array) {
bol = arrSame(obj[key],newObj[key])
if (!bol) {
break;
}
} else if (obj[key] != newObj[key]) {
bol = false;
break;
}
}
return bol
} /**
* 验证两个数组是否相同
* @param {Array} arr [需要进行验证的数据1]
* @param {Array} newArr [需要进行验证的数据2]
*/
function arrSame (arr,newArr) {
let bol = true;
if (arr.length != newArr.length) {
return false;
}
for (let i = 0, n = arr.length;i < n; i++) {
if (arr[i] instanceof Array) {
bol = arrSame(arr[i],newArr[i])
if (!bol) {
break;
}
} else if (arr[i] instanceof Object) {
bol = objSame(arr[i],newArr[i])
if (!bol) {
break;
}
}else if (arr[i] != newArr[i]) {
bol = false;
break;
}
}
return bol;
}

也可以单纯的使用 for  in :

/**
* 验证两条数据是否相同
* @param {Array | Object} arg1 [需要进行验证的数据1]
* @param {Array | Object} arg2 [需要进行验证的数据2]
*/
function isSame (arg1,arg2) {
let bol = true;
if (Object.keys(arg1).length != Object.keys(arg2).length) {
return false;
}
for (let key in arg1) {
if (typeof arg1[key] == 'object') {
bol = isSame(arg1[key],arg2[key])
if (!bol) {
break;
}
} else if(arg1[key] != arg2[key]){
bol = false;
break;
}
}
return bol
}

我个人喜欢对数组使用for,对对象使用for in,以上代码只进行了粗略的测试,有什么问题欢迎指正,不胜感激。

js判断数组或对象是否相等的更多相关文章

  1. js判断数组,对象是否存在某一未知元素

    1.对象 var obj = { aa:'1111', bb:'2222', cc: '3333' }; var str='aa'; if(str in obj){ console.log(obj[s ...

  2. js 判断 数组和对象

    提方案的时候顺便会引申一下该方法的使用. 一,instanceOf:(可以判断) instanceOf运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性. 也可以这样说 ...

  3. js判断数组和对象

    <script> var arr=new Array(); var obj={'1':2}; var num=11; function isType(obj){ if(obj instan ...

  4. js 判断数组

    这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单 ...

  5. js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

    var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...

  6. [记录] js判断数组key是否存在

    数组中判断key是否存在 可以通过arrayObject.hasOwnProperty(key)来进行判断数组key是否存在,返回的是boolean值,如果存在就返回true,不存在就返回false ...

  7. js判断数组中是否包含某个元素

    参考:http://www.runoob.com/jquery/misc-inarray.html js判断数组中是否包含某个元素 $.inArray( value, array [, fromInd ...

  8. Js判断数组中是否存在某个元素

    Js判断数组中是否存在某个元素 方法一:indexOf(item,start); Item:要查找的值:start:可选的整数参数,缺省则从起始位子开始查找. indexOf();返回元素在数组中的位 ...

  9. js 空数组 空对象判断

    js 空数组是true还是false   1 2 var arr = new Array(); // 或 var arr = []; 我们知道,初始化后,即使数组arr中没有元素,也是一个object ...

随机推荐

  1. 文本流向 layout-flow

    作用与语法 文本流向layout-flow用来定义网页中的文本流向方式. 即排列方式,主要有两个属性,分别是horizonta (水平的) 和vertical-ideographic (垂直的). 文 ...

  2. JavaBean与Map的相互转换

    package com.bizvane.utils.tools; import java.lang.reflect.Field; import java.util.Arrays; import jav ...

  3. iTerm2+oh-my-zsh配色

      效果图,很帅气有木有 一.首先安装iTem2 安装好后的截图如下:   安装好后的截图 二.安装oh-my-zsh. sh -c "$(curl -fsSL https://raw.gi ...

  4. bzoj 1024 [SCOI2009]生日快乐——模拟

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1024 可以枚举这边放多少块.那边放多少块. 注意精度.不要每次用x*y/base算有多少块, ...

  5. ML面试1000题系列(91-100)

    本文总结ML面试常见的问题集 转载来源:https://blog.csdn.net/v_july_v/article/details/78121924 91 简单说说RNN的原理?我们升学到高三准备高 ...

  6. shell 中数组学习

         因为应用shell的时间不是太长.对于数组在实际项目中没有接触过.今天在需要把相似于:a=1,2,3,4这种东西转换. 之前用的方法是用awk,分别取出.所以今天想是否有更好更简洁的方法-- ...

  7. Maple拥有优秀的符号计算和数值计算能力

    https://www.maplesoft.com/products/maple/ Maple高级应用和经典实例: https://wenku.baidu.com/view/f246962107221 ...

  8. Linux进程管理(一、 基本概念和数据结构)

    被问到两个问题, 后来想了下如果要讲明白还不太容易,需要对进程的概念,进程管理有清晰的认识: 1. 父进程打开了一个文件,然后通过fork创建一个子进程, 子进程是否共享父进程的文件描述符? 2. 在 ...

  9. Handler, AsyncTask用法简单示例

    package com.jim.testapp; import android.app.Activity; import android.os.AsyncTask; import android.os ...

  10. Pyhton 单行、多行注释方法

    一.python单行注释的符号 井号#常被用作单行注释符号,在代码中使用#时,它右边的任何数据都会被忽略,当做是注释.类似c++的// 二.批量.多行注释的符号 多行注释是用三引号: ”’ 注释内容 ...