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
    

      

  • 相关阅读:
    Git 常用命令
    Python 常用算法记录
    Python基础Web服务器案例
    你真的懂SDWebImage?
    Core Data的那点事儿~
    看看 SDWebImage内部基本实现过程
    App上架流程 & 上架被拒10大原因
    KVO中你所不知道的"坑"
    math公式手写识别网址
    umi build出现的Path must be a string的问题解决
  • 原文地址:https://www.cnblogs.com/youngboy-front/p/9138596.html
Copyright © 2011-2022 走看看