簡體   English   中英

根據 id 推入新數組 - Javascript

[英]push into new array based on id - Javascript

如何基於 Typescript/JavaScript 中具有相同 id 的兩個不同的 arrays 創建新數組?

let array1 = [
{
invoiceId: 1,
name:'Ajay',
contact:'0001'
},
{
invoiceId: 2,
name:'vijay',
contact:'1234'
},
{
invoiceId: 3,
name:'Amit',
contact:'4581'
},
];

let array2 = [
{
invoiceId: 1,
age:24,
email:'1223@gmail.com'
},
{
invoiceId: 2,
age:23,
email:'23gmail@gmail.com'
},
];

在這兩個數組中,公共字段是基於 invoiceid 的發票 ID 必須創建新數組,如下例所示。

let expectedresult = [
{
name:'Ajay',
age:24
},
{
name:'vijay',
age:23
},
{
name:'Amit',
age:null
},
];

如何在 Typescript/JavaScript 中處理這個問題。 有沒有基於 Lodash 的解決方案?

我認為這可能是一個解決方案。

 let array1 = [ { invoiceId: 1, name:'Ajay', contact:'0001' }, { invoiceId: 2, name:'vijay', contact:'1234' }, { invoiceId: 3, name:'Amit', contact:'4581' }, ]; let array2 = [ { invoiceId: 1, age:24, email:'1223@gmail.com' }, { invoiceId: 2, age:23, email:'23gmail@gmail.com' }, ]; console.log(array1.map(item=>({name:item.name, age: array2.filter(filteritem=>filteritem.invoiceId===item.invoiceId)[0]?.age || null})))

您必須通過array1 map 並在array2中找到匹配項。 如果找到,則返回姓名和年齡。

let expectedresult = array1.map(el => {
  let match = array2.find(obj => obj.invoiceId === el.invoiceId)
  return {
    name: el.name,
    age: match ? match.age : null
  }
})

您可以基於invoiceId作為其鍵從 array2 創建一個 object map,然后在遍歷 array1 時輕松訪問它。

const map2 = Object.fromEntries(array2.map(item=>[item['invoiceId'], item.age]))
const expectedArray = array1.map(item=> {
return {
name: item.name,
age: map2[item.invoiceId] ? map2[item.invoiceId] : null
}
}) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM