zoukankan      html  css  js  c++  java
  • 判断两个数组是否相等(包括数组里边的键值对是否相等)

    // 1.判断是否为空
    let isNotBlank = value => {
        if (value === null || value === undefined || value !== value ||
            value === 'null' || value === 'undefined' || value === 'NaN' || value === '') {
            return false;
        } else {
            let jsonStr = null;
            try {
                jsonStr = JSON.stringify(value);
            } catch (error) {
                jsonStr = ""
            }
            if (jsonStr === "{}") {
                return false;
            }
            return true;
        }
    }
    
    // 2.判断两个数组是否相等(包括数组里的键值是否相等)
    let oldArr = [1,2,3];
    let newArr = [1,3,2];
    Array.prototype.equals = function(array, key, order) {
    	// array--要比较的数组(必需)
    	// key--如果数组里边包裹着对象,则可以比较对象的某个键值对(可选)
    	// order--数组中的顺序是否可以打乱(可选)
        if (!array instanceof Array) return false; 
        if (this.length != array.length) return false;
        if(order) {// 顺序要求一致
        	for (let i = 0; i < this.length; i++) {
        	    if (isNotBlank(key)) {
        	        if (this[i][key] !== array[i][key]) {
        	            return false;
        	            break;
        	        }
        	    } else {
        	        if (this[i] !== array[i]) {
        	            return false;
        	            break;
        	        }
        	    }
        	}
        } else {// 顺序可以不一致
    	    for (let i = 0; i < this.length; i++) {
    	    	let log = false;
    	        for(let j = 0; j < array.length; j++) {
    	        	if(isNotBlank(key)) {
    	        		if (this[i][key] === array[j][key]) {
    	        		    log = true;
    	        		    break;
    	        		}
    	        	} else {
    		        	if(this[i] === array[j]) {
    						log = true;
    						break;
    		        	}
    	        	}
    	        }
    	        if(!log) {
    	        	return false;
    	        	break;
    	        }
    	    }
        }
        return true;    
    }
    Object.defineProperty(Array.prototype, "equals", {enumerable: false});
    
    console.log(oldArr.equals(newArr));// true;
    console.log(oldArr.equals(newArr, null, true))// false
    

      

  • 相关阅读:
    注册表
    windows.location.href在IE6下停止工作
    LINUX配置IP的三种方式
    InnoSetup 打包代码 检测.netFramework
    SQLiteHelper
    黑马程序员_看视频记笔记_C#编程基础02
    通过注册表来检测是否安装Office
    SQLiteHelper
    TSQL
    IIS下发布关于Excel导入导出时遇到的问题集锦
  • 原文地址:https://www.cnblogs.com/youngboy-front/p/9138596.html
Copyright © 2011-2022 走看看