javascript - 通过键将数组中的对象推送到不同的数组

标签 javascript arrays lodash

我正在尝试将一个对象数组推送到另一个现有的对象数组。

例子:

var invoices = [ 
{ 
  InvoiceId: 2,
  Contact: 'Jim',
  InvoiceNumber: '3',
  LineItems: [] 
},
{ 
  InvoiceId: 1002,
  Contact: 'Peter',
  InvoiceNumber: '4' },
  LineItems: [] 
}];


var invoiceLines = [ 
{ Id: 1003,
 InvoiceId: 2 },
 Amount: 1000,
{ Id: 1004,
 InvoiceId: 2,
 Amount: 1000,
{ Id: 1006,
 InvoiceId: 1002,
 Amount: 3000,}];

所以我尝试获取 invoiceLines 数组中的每个对象,并将其推送到 invoices.Lineitems if InvoiceId 匹配。所以它看起来像这样:

var result= [ 
{ 
 InvoiceId: 2,
 Contact: 'Jim',
 InvoiceNumber: '3',
 LineItems: [{ 
   Id: 1003,
   InvoiceId: 1002,
   Amount: 1000},{ 
   Id: 1004,
   InvoiceId: 1002,
   Amount: 1000}] 
},
{ 
 InvoiceId: 1002,
 Contact: 'Peter',
 InvoiceNumber: '4' },
 LineItems: [{
   Id: 1006,
   InvoiceId: 1002,
   Amount: 3000}] 
}];

我尝试了以下方法:

var result = _({})
 .merge(
  _(flattenedinvoiceLines).groupBy("InvoiceId").value(),
  _(invoices).groupBy("Id").value())
 .values()
 .flatten()
 .value();
}

这怎么会只是插入 invoices 数组,而不是 invoice.LineItems。

最佳答案

您可以遍历 invoices,然后通过验证 InvoiceId 是否相同来找到 invoiceLines 中的所有匹配项。下面的示例代码

var invoices = [ 
{ 
  InvoiceId: 2,
  Contact: 'Jim',
  InvoiceNumber: '3',
  LineItems: []
},
{ 
  InvoiceId: 1002,
  Contact: 'Peter',
  InvoiceNumber: '4',
  LineItems: [] 
}
];

var invoiceLines = [
{ Id: 1003,
 InvoiceId: 2,
 Amount: 1000 
},
{ Id: 1004,
 InvoiceId: 2,
 Amount: 1000,
 },
{ Id: 1006,
 InvoiceId: 1002,
 Amount: 3000
 }
 ];
 
  
 
const result = invoices.map(invoice => {
  invoice.LineItems = invoiceLines.filter((line) => line.InvoiceId === invoice.InvoiceId)
  return invoice;
})
 console.log(result)

关于javascript - 通过键将数组中的对象推送到不同的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51620190/

相关文章:

javascript - 没有共同启动关系的 Chrome 窗口定位

javascript - 如何创建指令模块名称的隔离范围?

javascript - JSON 日期到普通 JS 日期

python - 在 numpy 数组中的特定位置插入值(np.insert 做对了吗?)

javascript - 如何查看范围并在单元格中设置值(如果存在重合)

c# - 是否有与 PHP 的 array_key_exists 等效的 C#?

javascript - 如何根据一个属性优化JS对象的数组查找

javascript - 将对象数组转换为lodash中的单个对象数组

javascript - 将 JSON 数据分组到多个键上并保留键

javascript - 通过保留相同键的所有值来合并 map 的 map (嵌套 map )es6