使用id从数组中选择对象。 Node.js和Express

时间:2016-11-08 13:49:29

标签: javascript arrays node.js

我有一个学校的任务,我们正在使用Node.js&表达。现在我卡住了。

如果我将其粘贴到我的浏览器中 http://localhost:3000/courses/2 ,我需要在下面的数组中获取ID为2的课程。这是阵列的一部分...

courses[0] = '{"_id":1,"courseId":"DT162G","courseName":"Javascript-baserad webbutveckling","coursePeriod":1}';
courses[1] = '{"_id":2,"courseId":"IK060G","courseName":"Projektledning","coursePeriod":1}';
courses[2] = '{"_id":3,"courseId":"DT071G","courseName":"Programmering i C#.NET","coursePeriod":2}';
courses[3] = '{"_id":4,"courseId":"DT148G","courseName":"Webbutveckling för mobila enheter","coursePeriod":2}';

这是我的代码

router.get('/:id', function(req, res, next) {

    var id = req.params.id;
    var get_course = "No course found!";


        for(row of courses){
            course_id = row;
            // MY PROBLEM IS HERE
            if(course_id.indexOf(id) > 0) get_course = row;
            //
        }

    console.log(get_course);
    res.contentType('application/json');
    res.send(get_course);
})

我的问题是在for循环中,我们讨厌使用indexOf()尝试选择它,但不是必需的。但是我无法让它发挥作用。我在这里尝试了很多,所以上面的解决方案我知道不起作用。

使用该解决方案即可获得id为6的课程,因为indexOf,所以这不对,但你们可以看到我希望的问题。

1 个答案:

答案 0 :(得分:0)

首先检查你是否有一个字符串数组。

您可以使用Array.prototype.map()通过在courses上调用所有项目,从JSON.parse(i)创建新的对象数组。

然后您可以使用Array.prototype.find()返回第一个元素    满足提供的测试功能的数组:

var courses = ['{"_id":1,"courseId":"DT162G","courseName":"Javascript-baserad webbutveckling","coursePeriod":1}','{"_id":2,"courseId":"IK060G","courseName":"Projektledning","coursePeriod":1}','{"_id":3,"courseId":"DT071G","courseName":"Programmering i C#.NET","coursePeriod":2}','{"_id":4,"courseId":"DT148G","courseName":"Webbutveckling för mobila enheter","coursePeriod":2}'],
    id = 2,
    course = courses.map((i) => JSON.parse(i)).find((c) => c._id === id);

console.log(course);

请注意,id = 2是请求参数ID。