如何从JSON匹配一组id中提取一堆数据

时间:2017-06-11 22:08:30

标签: javascript json ecmascript-6

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

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 = 0id = 3的位置?

我的数组可能包含许多ID,因此我猜我需要迭代它。在那里思考我可以做的一堆循环,但它感觉不对。

注意:我正在做一个'模拟后端'对于目前的前端应用程序。从长远来看,我当然会更好/更有效地获取帖子。但目前我已经有了这个JSON数据集。

谢谢!

2 个答案:

答案 0 :(得分:2)

这样的东西?

const dataset = [
     {post_id: 1, title: 'First Post'},
     {post_id: 2, title: 'Second Post'},
     {post_id: 3, title: 'Third Post'},
];
const posts_to_get = [1,3];
var result = dataset.filter(p=>posts_to_get.includes(p.post_id))
console.log(result)

答案 1 :(得分:0)

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

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()]));