Javascript 如何从与ID数组匹配的JSON中提取一组数据
在Javascript中,我有一个帖子的数据集(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
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