Javascript 如何从与ID数组匹配的JSON中提取一组数据

Javascript 如何从与ID数组匹配的JSON中提取一组数据,javascript,json,ecmascript-6,Javascript,Json,Ecmascript 6,在Javascript中,我有一个帖子的数据集(JSON)。每个帖子都有一个post\u id。我有一个post\u ids数组,我想用它从主数据集中提取某些帖子 const dataset = [ {post_id: 1, title: 'First Post'}, {post_id: 2, title: 'Second Post'}, {post_id: 3, title: 'Third Post'}, ]; 然后我就有了我想要得到的帖子的数组: const

在Javascript中,我有一个帖子的数据集(JSON)。每个帖子都有一个
post\u id
。我有一个
post\u id
s数组,我想用它从主数据集中提取某些帖子

const dataset = [
     {post_id: 1, title: 'First Post'},
     {post_id: 2, title: 'Second Post'},
     {post_id: 3, title: 'Third Post'},
];
然后我就有了我想要得到的帖子的数组:

const posts_to_get=[0,3]

如何解析数据集以提取
id=0
id=3

我的数组可能包含很多ID,所以我想我需要对它进行迭代。我想我可以做很多循环,但感觉不对

注意:我现在正在为前端应用程序做一个“模拟后端”。从长远来看,我当然会做得更好/更有效地获取帖子。但目前我有一个JSON数据集要处理

谢谢

像这样的

const数据集=[
{post_id:1,标题:'First post'},
{post_id:2,标题:'Second post'},
{post_id:3,标题:'Third post'},
];
const posts_to_get=[1,3];
var result=dataset.filter(p=>posts_to_get.includes(p.post_id))
console.log(result)
类似的内容

const数据集=[
{post_id:1,标题:'First post'},
{post_id:2,标题:'Second post'},
{post_id:3,标题:'Third post'},
];
const posts_to_get=[1,3];
var result=dataset.filter(p=>posts_to_get.includes(p.post_id))

console.log(result)
如果您有一个大型数据集,那么在尝试读取之前将数组转换为对象可能是值得的

const m = dataset.reduce((obj, cur) => {
    obj[cur.post_id] = cur;
    return obj;
}, {});
查找将是固定时间(尽管您必须将要查找的post_id转换为字符串:

const ids_to_find = [1, 3];
console.log(ids_to_find.map(i => m[i.toString()]));

如果您有一个大型数据集,那么在尝试读取之前将数组转换为对象可能是值得的

const m = dataset.reduce((obj, cur) => {
    obj[cur.post_id] = cur;
    return obj;
}, {});
查找将是固定时间(尽管您必须将要查找的post_id转换为字符串:

const ids_to_find = [1, 3];
console.log(ids_to_find.map(i => m[i.toString()]));

post\u id
s unique吗?@AndyGaskell是的!post\u id
s unique吗?@AndyGaskell是的!谢谢Michal。我认为这不管用?当我测试它时,它只返回最后一篇文章。我以前没有听说过
包含
,但事实上它确实管用!我有0,3作为id,但1,3当然管用!这在代码段中管用,已将
posts\u更改为\u get
以打印3篇文章中的2篇。
包括
是一种新内容,请查看此处:。如果您针对的是较旧的浏览器,您可以使用例如
.indexOf(p.post\u id)>=0
谢谢Michal。不过我认为这不管用?当我测试它时,它只返回最后一篇文章。我以前从没听说过
包含
,但事实上它确实管用!我有0,3作为ID,但1,3当然管用!这在代码段中管用,将
posts\u改为\u get
打印3篇文章中的2篇。
包含
有点新的,请看这里:。如果您针对的是较旧的浏览器,您可以使用例如
.indexOf(p.post\u id)>=0