Javascript Lodash-具有不同身份的差异

Javascript Lodash-具有不同身份的差异,javascript,lodash,Javascript,Lodash,我有以下数组: [ { id: 1 }, { id: 2 }, { id: 3 }, { id: 4 } ] 我的应用程序每5秒接收一个新数组,我需要比较下一个数组之间的差异 因此,下一个数组是: [ { conversation_id: 1 }, { conversation_id: 2 }, { conversation_id: 4 } ] 考虑到身份是不同的。如何与上一个进行

我有以下数组:

[
  {
    id: 1
  },
  {
    id: 2
  },
  {
    id: 3
  },
  {
    id: 4
  }
]
我的应用程序每5秒接收一个新数组,我需要比较下一个数组之间的差异

因此,下一个数组是:

[
  {
    conversation_id: 1
  },
  {
    conversation_id: 2
  },
  {
    conversation_id: 4
  }
]
考虑到身份是不同的。如何与上一个进行比较并获得包含排除项的数组

[
  {
    id: 3
  }
]

我认为您可以混合使用javascript和lodash来解决这个问题。
var arrayList=[
{
身份证号码:1
},
{
身份证号码:2
},
{
身份证号码:3
},
{
身份证号码:4
}
];
变量conv_数组=[
{
对话编号:1
},
{
对话编号:2
},
{
对话编号:4
}
];
var itemsNotInArray=[];
arrayList.filter(函数(项){
if(!.find(conv_数组,{conversation_id:item.id})){
日志(“不在数组中”,项);
ItemsNotArray.push(项目);
}
});
log(“您期望的结果”,itemsNotInArray)

我认为可以混合使用javascript和lodash来解决这个问题。
var arrayList=[
{
身份证号码:1
},
{
身份证号码:2
},
{
身份证号码:3
},
{
身份证号码:4
}
];
变量conv_数组=[
{
对话编号:1
},
{
对话编号:2
},
{
对话编号:4
}
];
var itemsNotInArray=[];
arrayList.filter(函数(项){
if(!.find(conv_数组,{conversation_id:item.id})){
日志(“不在数组中”,项);
ItemsNotArray.push(项目);
}
});
log(“您期望的结果”,itemsNotInArray)

筛选第一个数组并比较每个值,直到找到缺少的id:

var数组1=[{
身份证号码:1
},
{
身份证号码:2
},
{
身份证号码:3
},
{
身份证号码:4
}
];
变量array2=[{
对话编号:1
},
{
对话编号:2
},
{
对话编号:4
}
];
var测试=阵列1.0过滤器(
conv=>!array2.find(
id=>id.conversation\u id==conv.id
)
);

console.log(test)
过滤第一个数组并比较每个值,直到找到缺少的id:

var数组1=[{
身份证号码:1
},
{
身份证号码:2
},
{
身份证号码:3
},
{
身份证号码:4
}
];
变量array2=[{
对话编号:1
},
{
对话编号:2
},
{
对话编号:4
}
];
var测试=阵列1.0过滤器(
conv=>!array2.find(
id=>id.conversation\u id==conv.id
)
);
console.log(test)
从中,
differenceBy
的第三个参数是

[iteratee=..identity](函数)
:每个元素调用的iteratee

基于此,您可以使用

var current = [
    {
        id: 1
    },
    {
        id: 2
    },
    {
        id: 3
    },
    {
        id: 4
    }
];

然后

或使用箭头功能缩短:

var difference = _.differenceBy(current, next, (x) => x.id || x.conversation_id) 
从中,
differenceBy
的第三个参数是

[iteratee=..identity](函数)
:每个元素调用的iteratee

基于此,您可以使用

var current = [
    {
        id: 1
    },
    {
        id: 2
    },
    {
        id: 3
    },
    {
        id: 4
    }
];

然后

或使用箭头功能缩短:

var difference = _.differenceBy(current, next, (x) => x.id || x.conversation_id) 
使用

constprev=[{“id”:1},{“id”:2},{“id”:3},{“id”:4}]
const next=[{“对话id”:1},{“对话id”:2},{“对话id”:4}]
const diff=uu.differenceWith(上一个,下一个,({id},{conversation\u id})=>uu.eq(id,conversation\u id))
console.log(差异)
使用
\u.differenceWith()

constprev=[{“id”:1},{“id”:2},{“id”:3},{“id”:4}]
const next=[{“对话id”:1},{“对话id”:2},{“对话id”:4}]
const diff=uu.differenceWith(上一个,下一个,({id},{conversation\u id})=>uu.eq(id,conversation\u id))
console.log(差异)

假设
a
b
是你的数组,带有简单的JS->
a.filter(x=>!b.find(k=>k.conversation\u id==x.id))
假设
a
b
是你的数组,带有简单的JS->
a.filter(x=>!b.find(k=>k.conversation\u id==x.id))