我有一个学校的任务,我们正在使用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,所以这不对,但你们可以看到我希望的问题。
答案 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。