js判断数组或对象是否相等
/**
* 验证两个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判断数组或对象是否相等的更多相关文章
- js判断数组,对象是否存在某一未知元素
1.对象 var obj = { aa:'1111', bb:'2222', cc: '3333' }; var str='aa'; if(str in obj){ console.log(obj[s ...
- js 判断 数组和对象
提方案的时候顺便会引申一下该方法的使用. 一,instanceOf:(可以判断) instanceOf运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性. 也可以这样说 ...
- js判断数组和对象
<script> var arr=new Array(); var obj={'1':2}; var num=11; function isType(obj){ if(obj instan ...
- js 判断数组
这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单 ...
- js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法
var questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...
- [记录] js判断数组key是否存在
数组中判断key是否存在 可以通过arrayObject.hasOwnProperty(key)来进行判断数组key是否存在,返回的是boolean值,如果存在就返回true,不存在就返回false ...
- js判断数组中是否包含某个元素
参考:http://www.runoob.com/jquery/misc-inarray.html js判断数组中是否包含某个元素 $.inArray( value, array [, fromInd ...
- Js判断数组中是否存在某个元素
Js判断数组中是否存在某个元素 方法一:indexOf(item,start); Item:要查找的值:start:可选的整数参数,缺省则从起始位子开始查找. indexOf();返回元素在数组中的位 ...
- js 空数组 空对象判断
js 空数组是true还是false 1 2 var arr = new Array(); // 或 var arr = []; 我们知道,初始化后,即使数组arr中没有元素,也是一个object ...
随机推荐
- [jnhs]未完待续HttpServletRequest示例
uri: /kaihu/showip.html method: GET QueryString: null Parameters: Headers: Name: host Value: localho ...
- 老大让我看baidu他们的查公交是怎么做的,我就看了
突然发现,baidu的查公交,Json请求都很乱 朝阳公园西门3号门 人民大学 较快捷 http://map.baidu.com/?newmap=1&reqflag=pcmap&biz ...
- Comparator进行List集合排序
对数据库中查询到的结果进行排序,一般开发中,实体类是没有实现Comparable接口的,所以不能实现compareTo()方法进行排序, 只能用Comparator去进行排序,只需要在带排序的集合中加 ...
- I Love Palindrome String
I Love Palindrome String 时间限制: 2 Sec 内存限制: 128 MB 题目描述 You are given a string S=s1s2..s|S| containi ...
- JS---案例:手风琴 (利用封装好的动画函数)
案例:手风琴 封装好的动画函数在common.js里面 //function getStyle(element, attr) {...} //function animate( ...
- Leetcode62.Unique Paths不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为" ...
- POJ 2078
16ms 解法: #include <cstdio> //using namespace std; ][]; ][]; ]; ]; int n,min,max; void solve(in ...
- Minitab软件是现代质量管理统计的领先者,全球六西格玛实施的共同语言,以无可比拟的强大功能和简易的可视化操作深受广大质量学者和统计专家的青睐。
Minitab软件是现代质量管理统计的领先者,全球六西格玛实施的共同语言,以无可比拟的强大功能和简易的可视化操作深受广大质量学者和统计专家的青睐. MINITAB 功能菜单包括:基础和高级统计工具: ...
- 【JZOJ4964】【GDKOI2017模拟1.21】Rhyme
hafy 由于多次交换邮票没有满足所有人的需求,小Z被赶出了集邮部.无处可去的小Z决定加入音乐部,为了让音乐部的人注意到自己的才华,小Z想写一首曲子.为了让自己的曲子更好听,小Z找到了一些好听曲子作为 ...
- python流程控制和循环
变量的命名:可以由数字字母下换线组成 ,不能以数字开头,可以使用中文但是不推荐使用中文,不推荐前面使用_ __,不能使用系统的关键字,变量名严格区分大小写 逻辑运算优先级 or<and<n ...