Javascript 如何在比较后打印对象数组中的额外对象?

Javascript 如何在比较后打印对象数组中的额外对象?,javascript,arrays,Javascript,Arrays,我试图比较array1和array2,得到在这两个数组中不存在的对象 预期产出 const array1 = [ {id: 1, Q_type: "AL"}, {id: 2, Q_type: "BL"}, {id: 3, Q_type: "CL"}, {id: 4, Q_type: "DL"} ] const array2 = [ {id: 2, Q_type: "BL"},

我试图比较
array1
array2
,得到在这两个数组中不存在的对象

预期产出

const array1 = [
  {id: 1, Q_type: "AL"},
  {id: 2, Q_type: "BL"},
  {id: 3, Q_type: "CL"},
  {id: 4, Q_type: "DL"}
]
const array2 = [
  {id: 2, Q_type: "BL"},
  {id: 3, Q_type: "CL"},
  {id: 4, Q_type: "DL"}
]

const arrAfterComparison = array1.filter(val => !array2.includes(val))
使用
Array.some()
内部
Array.filter()
方法回调

常量数组1=[
{id:1,Q_类型:“AL”},
{id:2,Q_类型:“BL”},
{id:3,Q_类型:“CL”},
{id:4,Q_类型:“DL”}
]
常数数组2=[
{id:2,Q_类型:“BL”},
{id:3,Q_类型:“CL”},
{id:1,Q_类型:“DL”}
]
常量输出=array1.filter(item=>!array2.some(a=>a.Q_类型===item.Q_类型))
控制台日志(输出)使用
Array.some()
内部
Array.filter()
方法回调

常量数组1=[
{id:1,Q_类型:“AL”},
{id:2,Q_类型:“BL”},
{id:3,Q_类型:“CL”},
{id:4,Q_类型:“DL”}
]
常数数组2=[
{id:2,Q_类型:“BL”},
{id:3,Q_类型:“CL”},
{id:1,Q_类型:“DL”}
]
常量输出=array1.filter(item=>!array2.some(a=>a.Q_类型===item.Q_类型))

控制台日志(输出)比较时,实际上两个对象不相似。。仔细观察(这不是错误)

  • id为1的
    Q\u类型的
  • id为4的那个(我们都看到这个)
  • 常量数组1=[
    {id:1,Q_类型:“AL”},
    {id:2,Q_类型:“BL”},
    {id:3,Q_类型:“CL”},
    {id:4,Q_类型:“DL”}
    ]
    常数数组2=[
    {id:2,Q_类型:“BL”},
    {id:3,Q_类型:“CL”},
    {id:1,Q_类型:“DL”}
    ]
    函数oddIndexesOut(_arr1,_arr2){
    //对象可能“看起来”相同,但如果它们不指向同一个对象,它们就不相等。然而,如果我将其转换为字符串,“看起来”相等的对象就相等
    _arr1=\u arr1.map(a=>JSON.stringify(a))
    _arr2=_arr2.map(a=>JSON.stringify(a))
    //比较功能(如果事物“看起来”相似)
    功能比较(arr1、arr2){
    var x=arr1.filter(a=>!arr2.includes(a))
    返回x.map(a=>JSON.parse(a))
    }
    //使用最长的数组(以便可以完全检查)
    如果(\u arr1.length>\u arr2.length){
    返回比较(_arr1,_arr2)
    }
    返回比较(_arr2,_arr1)
    }
    
    log(oddIndexesOut(array1,array2))
    比较时,实际上两个对象并不相似。。仔细观察(这不是错误)

  • id为1的
    Q\u类型的
  • id为4的那个(我们都看到这个)
  • 常量数组1=[
    {id:1,Q_类型:“AL”},
    {id:2,Q_类型:“BL”},
    {id:3,Q_类型:“CL”},
    {id:4,Q_类型:“DL”}
    ]
    常数数组2=[
    {id:2,Q_类型:“BL”},
    {id:3,Q_类型:“CL”},
    {id:1,Q_类型:“DL”}
    ]
    函数oddIndexesOut(_arr1,_arr2){
    //对象可能“看起来”相同,但如果它们不指向同一个对象,它们就不相等。然而,如果我将其转换为字符串,“看起来”相等的对象就相等
    _arr1=\u arr1.map(a=>JSON.stringify(a))
    _arr2=_arr2.map(a=>JSON.stringify(a))
    //比较功能(如果事物“看起来”相似)
    功能比较(arr1、arr2){
    var x=arr1.filter(a=>!arr2.includes(a))
    返回x.map(a=>JSON.parse(a))
    }
    //使用最长的数组(以便可以完全检查)
    如果(\u arr1.length>\u arr2.length){
    返回比较(_arr1,_arr2)
    }
    返回比较(_arr2,_arr1)
    }
    
    console.log(oddIndexesOut(array1,array2))
    到目前为止,您自己尝试了什么来解决这个问题?@Andreas添加了我失败的尝试。。我尝试了许多解决方案,但我被困在这里:(@Phil预期的o/p将是
    [{id:4,Q_类型:“AL”}]
    [{id:1,Q_类型:“AL”}]
    ?我的错..它将是
    [{id:1,Q_类型:“AL”}]
    @Phil你确定这只是一个不同的对象吗?到目前为止,你自己尝试过解决这个问题吗?@Andreas补充了我失败的尝试。我尝试了很多解决方案,但我被困在这里:(@Phil预期的o/p将是这个
    [{id:4,Q_类型:“AL”}]
    [{id:1,Q_类型:“AL”}]
    ?我的错。
    [{id:1,Q_type:“AL”}]
    @Phil你确定那里只有一个不同的对象吗?这完美地解决了它..被困在这里一段时间..从来没有使用过
    some()
    method在我阅读docx之前,谢谢你。你不认为在任何地方都会有另一个问题已经解决了这个问题吗?这完美地解决了它。被困在这里一段时间了。从来没有使用过
    some()
    方法,然后我将阅读docx Thanks。难道你不认为在任何地方都会有另一个问题,因此已经解决了这个问题吗?
    arrAfterComparison = [{id:1,Q_type:"AL"}]