[英]Pick out object from array using id. Node.js and Express
我有一個學校的任務,我們正在使用Node.js&Express。 現在我卡住了。
如果我將其粘貼到瀏覽器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()來選擇它,盡管不是必需的。 但是我不能讓它工作。 我在這里嘗試了很多,所以我知道上面的解決方案不起作用。
使用該解決方案,由於indexOf,我正在獲得ID為6的課程,所以那不是正確的,但是你們可以看到我希望的問題。
首先檢查您是否有字符串數組。
您可以通過對所有項目調用JSON.parse(i)
來使用Array.prototype.map()從courses
創建新的對象數組。
然后,您可以使用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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.