javascript - JavaScript:比较两个数组并替换对象
问题描述
我有两个数组,我想根据它们相互比较Username
并创建一个新数组,其中包括EmployeeName
let array1 = [{
OrderID: 30879,
OrderItems: "Sushi",
OrderedBy: "johnd",
},
{
OrderID: 30880,
OrderItems: "Subway",
OrderedBy: "janes",
},
{
OrderID: 30881,
OrderItems: "KFC",
OrderedBy: "alanf",
},
];
let array2 = [{
EmployeeName: "John Doe",
Username: "johnd",
},
{
EmployeeName: "Jane Snow",
Username: "janes",
},
{
EmployeeName: "Alan Fred",
Username: "alanf",
}
]
期望的结果:
array3 = [{
OrderID: 30879,
OrderItems: "Sushi",
OrderedBy: "johnd",
EmployeeName: "John Doe",
},
{
OrderID: 30880,
OrderItems: "Subway",
OrderedBy: "janes",
EmployeeName: "Jane Snow",
},
{
OrderID: 30881,
OrderItems: "KFC",
OrderedBy: "alanf",
EmployeeName: "Alan Fred",
},
]
我已经坚持了一段时间了,我怎样才能最好地做到这一点?
TIA
解决方案
简单数组map
,使用 afind
获取匹配的用户名,使用{...}
扩展运算符返回合并对象。可能和其他回复一样
const combined = array1.map( obj => {
let e = array2.find(el=>el.Username == obj.OrderedBy).EmployeeName
return {...obj, EmployeeName: e}
})
let array1 = [{
OrderID: 30879,
OrderItems: "Sushi",
OrderedBy: "johnd"
},
{
OrderID: 30880,
OrderItems: "Subway",
OrderedBy: "janes"
},
{
OrderID: 30881,
OrderItems: "KFC",
OrderedBy: "alanf"
}
];
let array2 = [{
EmployeeName : "John Doe",
Username : "johnd"
},
{
EmployeeName : "Jane Snow",
Username : "janes"
},
{
EmployeeName : "Alan Fred",
Username : "alanf"
}
];
const combined = array1.map( obj => {
let e = array2.find(el=>el.Username == obj.OrderedBy).EmployeeName
return {...obj, EmployeeName: e}
})
console.log(combined)
推荐阅读
- flutter - Flutter Web 的文件夹选择器?
- dynamics-crm - 导入文件动态CRM
- angular - 修补表单时,控件上的更改检测如何工作?
- javascript - 用于传递颜色的 React 道具
- ignite - 预写缓存导致 CacheWriterException
- node.js - 数据库节点js的数据输出问题
- pandas - 如何将包含一个 NaN 值的行插入到另一个新的 Dataframe
- angular - 如何强制关注 Nebular Select 元素?
- tensorflow - 获得完全量化的 TfLite 模型,在 int8 上也有输入和输出
- elasticsearch - Elasticsearch 并行索引多个文件