我有一个如下所示的数组:
用户数据:
[
{firstName:"sally", lastName:"yates", id:1},
{firstName:"bob", lastName:"ross", id:2}
]
宠物数据:
[
{pet:"dog", ownerId:1}
{pet:"cat", ownerId:2}
]
我希望我的结果看起来像这样:
[
{pet:"dog", userId:1, userName:"sally yates"},
{pet:"cat", userId:2, userName:"bob ross"}
]
我可以执行过滤,但只能针对 1 个名称。获取名字和姓氏的正确方法是什么?
petData.forEach(function(item) {
var creator = _.pluck(
_.filter(userData, {
id: item.ownerId
}),
"first_name"
);
item["userName"] = creator;
}
**抱歉,有一点是我必须保留 forEach 函数,因为其他开发人员的代码将其用于其他条件
最佳答案
要达到预期结果,请使用以下使用 map 和过滤器的选项
- 使用 map 循环 petData
- 使用 petData OwnerId 过滤 userData 数组
let userData = [
{firstName:"sally", lastName:"yates", id:1},
{firstName:"bob", lastName:"ross", id:2}
]
let petData = [
{pet:"dog", ownerId:1},
{pet:"cat", ownerId:2}
]
console.log(petData.map(v => {
let user = userData.filter(val => val.id === v.ownerId)[0]
v["userName"] = user.firstName + ' ' + user.lastName;
v["userId"] = v.ownerId;
delete v.ownerId;
return v
}))
选项 2:按照问题中的要求使用 forEach
let userData = [
{firstName:"sally", lastName:"yates", id:1},
{firstName:"bob", lastName:"ross", id:2}
]
let petData = [
{pet:"dog", ownerId:1},
{pet:"cat", ownerId:2}
]
let result =[]
petData.forEach(v => {
let user = userData.filter(val => val.id === v.ownerId)[0]
v["userName"] = user.firstName + ' ' + user.lastName;
v["userId"] = v.ownerId;
delete v.ownerId;
result.push(v)
})
console.log(result)
关于javascript - 定制 ES6 数组过滤的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56192909/