猿问

使用 Lodash/Javascript 的过滤器获取过滤后的数据

我有两个对象数组。


const firstObj = [

  { Id: "1", Name: "Peter" },

  { Id: "2", Name: "John" },

  { Id: "12", Name: "jessy" },

];


const secondObj = [

  { Id: "1", Name: "Roa", original: { Id: "1" } },

  { Id: "2", Name: "John2", original: { Id: "2" } },

  { Id: "5", Name: "Rachel", original: { Id: "3" } },

];

在这里,我试图根据Id过滤数据并返回过滤后的数据firstObj


所以,这里的 firstObj 有一个条目 { Id: "12", Name: "jessy" }this object,其 Id 与 so 不匹配secondObj.original.Id,firstObj将具有给定的结果。


我试过的是


firstObj.filter(

  firstObj,

  secondObj.map((second) => {

    return firstObj.Id === second.original.Id;

  }),

);

但这不起作用。任何人都可以在这里帮助我,使用 Lodash 或 Js 过滤器。


output would be -> [{"Id": "3", "Name": "jessy"}]


波斯汪
浏览 162回答 3
3回答

慕的地10843

这是你想要的?const firstObj = [  { Id: "1", Name: "Peter" },  { Id: "2", Name: "John" },  { Id: "12", Name: "jessy" },];const secondObj = [  { Id: "1", Name: "Roa", original: { Id: "1" } },  { Id: "2", Name: "John2", original: { Id: "2" } },  { Id: "1", Name: "Rachel", original: { Id: "3" } },];const result = lodash.filter(firstObj, (firstItem) => {  return !lodash.some(secondObj, (secondItem) => {    return firstItem.Id === secondItem.original.Id;  });});直播:https://stackblitz.com/edit/js-addy5t?file =index.js

德玛西亚99

为什么要为此使用 loadash。您可以使用本机过滤器并查找功能来实现此目的const filter = firstObj.filter(item => {      return secondObj.find(itm => itm.original.id === item.id) });

慕姐8265434

Array.filter()您可以使用和的本地方法Array.some()来实现所需的输出。请检查下面的工作代码片段ES6const firstObj = [  { Id: "1", Name: "Peter" },  { Id: "2", Name: "John" },  { Id: "12", Name: "jessy" },],secondObj = [  { Id: "1", Name: "Roa", original: { Id: "1" } },  { Id: "2", Name: "John2", original: { Id: "2" } },  { Id: "1", Name: "Rachel", original: { Id: "3" } },];let result = firstObj.filter(({Id})=> !secondObj.some(item => item.original.Id === Id));console.log(result)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答