javascript - 定制 ES6 数组过滤的结果

标签 javascript arrays ecmascript-6 filter

我有一个如下所示的数组:

用户数据:

[
{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 和过滤器的选项

  1. 使用 map 循环 petData
  2. 使用 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/

相关文章:

javascript - ElevateZoom 默认缩放级别

javascript - 我的 Firebug 控制台中定义的函数如何接受默认参数?

arrays - 如何在VBA的“即时”窗口中打印二维数组?

arrays - 将字符串值的 Redshift super 数组转换为逗号分隔的字符串

javascript - Array.prototype.values() 未定义 - 在 NodeJS 环境中使用 Babel 转译 ES6

javascript - 无法触发 Youtube 的 Iframe-API 的 "loadVideoByUrl(' .. .')"– 未定义

javascript - jQuery 复制和粘贴使用 document.execCommand ("copy") 和 ("paste")

java - 字符串操作

javascript - 动态从 Api 获取 token 以访问内容

javascript - spread 属性的语法错误