js比较两个数组对象,取出不同的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js比较两个数组对象,取出不同的值相关的知识,希望对你有一定的参考价值。

var array1= "object": [ "Num": "A " ,"Num": "B" ];
========================================================
var array2= "object": [ "Num": "A ","Name": "t1 " , "Num": "B","Name": "t2", "Num": "C " ,"Name": "t3 "];

我想比较这两个数组的Num,取出array2数组不包括array1的数据,想得出结果如下:
该怎么做
var result= "object": [ "Num": "C " ,"Name": "t3 "];

var array1 = [ "Num": "A "  ,"Num": "B" ];
var array2 = [ "Num": "A ","Name": "t1 " , "Num": "B","Name": "t2", "Num": "C " ,"Name": "t3 "];
var result = [];
for(var i = 0; i < array2.length; i++)
    var obj = array2[i];
    var num = obj.Num;
    var isExist = false;
    for(var j = 0; j < array1.length; j++)
        var aj = array1[j];
        var n = aj.Num;
        if(n == num)
            isExist = true;
            break;
        
    
    if(!isExist)
        result.push(obj);
    

console.log(result);

参考技术A getArrDifference(arr1, arr2)
return arr1.concat(arr2).filter(function(v, i, arr)
return arr.indexOf(v) === arr.lastIndexOf(v);
);

JS-两个空数组为什么不相等?

var a = [], b = [];
console.log(a==b);

  控制台的打印结果是什么?答案是:false。

  接下来看解析:

  原始值的比较是值的比较:

    它们的值相等时它们就相等(==)

    它们的值和类型都相等时它们就恒等(===)。

  对象和原始值不同,对象的比较并非值的比较,而是引用的比较:

    即使两个对象包含同样的属性及相同的值,它们也是不相等的

    即使两个数组各个索引元素完全相等,它们也是不相等的

  举个栗子:

var o = {x:1}, p = {x:1};      // 具有相同属性的两个对象
o == p                        // => false: 两个单独的对象永不相等
var a = [], b = [];            // 两个单独的空数组
a == b                        // => false: 两个单独的数组永不相等

  我们通常将对象称为引用类型(reference type),以此来和JavaScript的基本类型区分开来。对象值都是引用(reference),对象的比较均是引用的比较:当且仅当它们引用同一个基对象时,它们才相等。

  举个栗子:

var a = [];  // 定义一个引用空数组的变量a
var b = a;   // 变量b引用同一个数组
b[0] = 1;    // 通过变量b来修改引用的数组
a[0]         // => 1: 变量a也会修改
a === b      // => true:a和b引用同一个数组,因此它们相等

 

以上是关于js比较两个数组对象,取出不同的值的主要内容,如果未能解决你的问题,请参考以下文章

JS-两个空数组为什么不相等?

JS-两个空数组为什么不相等?

C# 比较两个对象的属性值是不是有改变

js 如何比较两个对象相等

两个空对象(空数组)为什么不相等

js判断字符串是不是相等