Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较和排除对象数组_Javascript_Arrays_Reactjs_Object - Fatal编程技术网

Javascript 比较和排除对象数组

Javascript 比较和排除对象数组,javascript,arrays,reactjs,object,Javascript,Arrays,Reactjs,Object,我正在使用这个方便的功能: function not(a, b) { return a.filter((value) => b.indexOf(value) === -1); } 那么我有这个 let AvailableList = not(FullList, MyList); 如果我给出MyList和FullList中第一个元素的示例,它是: appName: "MyAppName*" description: null permissionID: MyApp

我正在使用这个方便的功能:

function not(a, b) {
  return a.filter((value) => b.indexOf(value) === -1);
}
那么我有这个

let AvailableList = not(FullList, MyList);
如果我给出MyList和FullList中第一个元素的示例,它是:

appName: "MyAppName*"
description: null
permissionID: MyAppID*
permissionName: "MyAppPermName*"
__proto__: Object
因此,最初可用列表中充满了上述项目。当用户做出选择并保存时,我将其保存到MyList中。所以我需要使用这个not函数来计算MyList中的剩余部分。但是,即使我将AvailableList的第一项移动到MyList,然后检查像
if(AvailableList==MyList)console.log(true)else console.log(false)
。但是,如果我将数组的前两项都记录下来,它们将打印相同的值。在使用
Object.assign()
声明变量之后,我尝试进行比较,但没有任何帮助

也许我可以通过检查permissionID这样的值轻松地解决这个问题,但我不想走这条路,因为以后还会有其他项目没有permissionID

如果你知道一个不同的功能可以做得更好,欢迎分享。请不要共享像Lodash这样的库解决方案

  • *条目被屏蔽了

要比较什么属性?将对象与
===
进行比较会将它们作为实例进行比较。两个单独的对象实例永远不会相互关联。但是,从您的问题来看,还不太清楚这是否是问题所在,因为您没有发布构建相关数组的代码。我想比较整个对象。所以我的数组中充满了这样的对象,我想一次比较整个对象,这样我可以给出(array1,array2),然后它会给我一个数组的结果,它有array1的所有元素,但删除了array1的所有元素array2@Pointy它不能通过===进行比较。它使用indexOf,然后检查其值是否为-1。AvailableList的所有项都充满了我提供的示例中的对象。MyList最初为空,然后用户选择并移动页面上的项目,然后将其中一些数组项目移动到MyList,但是
.indexOf()
会在内部与
==
进行比较。要比较的属性是什么?将对象与
==
进行比较会将它们作为实例进行比较。两个单独的对象实例永远不会相互关联。但是,从您的问题来看,还不太清楚这是否是问题所在,因为您没有发布构建相关数组的代码。我想比较整个对象。所以我的数组中充满了这样的对象,我想一次比较整个对象,这样我可以给出(array1,array2),然后它会给我一个数组的结果,它有array1的所有元素,但删除了array1的所有元素array2@Pointy它不能通过===进行比较。它使用indexOf,然后检查其值是否为-1。AvailableList的所有项都充满了我提供的示例中的对象。MyList最初为空,然后用户选择并移动页面上的项目,然后一些数组项目被移动到MyList,但是
。indexOf()
在内部与
==
进行比较。