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()
在内部与==
进行比较。