Javascript 使用.find嵌套在.map中构建对象数组

Javascript 使用.find嵌套在.map中构建对象数组,javascript,arrays,filter,array.prototype.map,Javascript,Arrays,Filter,Array.prototype.map,我有两个数组 1) ID的数组。例如项目标识:[1,4,12] 2) 对象数组 前 我需要构建一个新的数组,该数组由第二个数组中的对象组成,items,其ID位于第一个数组中 在本例中,它将是一个由对象1和3组成的数组,因为它们的ID存在于第一个数组中 这是我目前正在尝试的,但它返回了所有三个对象的未定义的(在我使用它的示例中有3个) 可用于更新==id this.state.availabilities.availabilities==对象数组函数map将创建与原始数组长度相同的新数组 将功能

我有两个数组

1) ID的数组。例如
项目标识:[1,4,12]

2) 对象数组

我需要构建一个新的数组,该数组由第二个数组中的对象组成,
items
,其ID位于第一个数组中

在本例中,它将是一个由对象1和3组成的数组,因为它们的ID存在于第一个数组中

这是我目前正在尝试的,但它返回了所有三个对象的
未定义的
(在我使用它的示例中有3个)

可用于更新
==id


this.state.availabilities.availabilities
==对象数组

函数
map
将创建与原始数组长度相同的新数组

将功能
过滤器
与功能
包含
一起使用,以满足您的需求

var item_id=[1,4,12],
items=[{id:1},{id:5},{id:12}],
filtered=items.filter(item=>(item_id.includes(item.id));
console.log(已过滤)
.as控制台包装{max height:100%!important;top:0;}
原因:以下解决方案小于嵌套

有关更多信息,请参阅和

//输入。
const items=[{id:1},{id:5},{id:12}]
常量ID=[1,4,12]
//过滤器。
常量过滤器=(x,y)=>{
常数s=新集合(y)
返回x.filter(({id})=>s.has(id))
}
//输出。
常量输出=过滤器(项目、ID)
//证明。

log(输出)
filter
标记表示您知道需要使用filter。您尝试过我们可以帮助您调试的任何东西吗?对
包括
的热爱在哪里?使用
。有些
似乎有些过分了。
items: [
  0: {id: 1...},
  1: {id: 5...},
  2: {id: 12...}
]
let new_avails = avails.avails_to_update.map(id => {
      this.state.availabilities.availabilities.find(function(a) {
        return a.id == id
      })
    }, this)