当我尝试使用(age => age.Book === book && age.Chapter === 1)
的第一种方法时,我的过滤器有效。
当我尝试(age => age.Book === book && age.Chapter === chapter)
时将不起作用。
所以当我在章节中不使用变量时。它可以是数字或字符串。那没关系但是当我使用可变章时。它不起作用。
我所有的章节都是数字。当我更改字符串中的一章(单词而不是数字)时,可变章确实起作用了。
有人可以解释我如何使变量生效吗?
app.get("/book/:bookTitle/:bookChapter/", function(req, res){
const book = req.params.bookTitle;
const chapter = req.params.bookChapter;
const verse = req.params.bookVerse;
const text = req.params.bookText;
const getBook = verseList.filter(age => age.Book === book && age.Chapter === 1);
const getBook = verseList.filter(age => age.Book === book && age.Chapter === chapter);
答案 0 :(得分:0)
您几乎可以理解。 req.params.bookChapter
是一个字符串,但数组中的chapter
是数字。因此,也只需将req.params.bookChapter
转换为数字即可。
const chapter = Number( req.params.bookChapter );
答案 1 :(得分:0)
您有机会错过它。.您不能两次声明相同的名字。
只要它们是同一类型,您的代码就应该可以工作!
例如:
const array = [];
for (let i=0; i < 100; i++) {
array[i] = ({
Book: "a"+Math.round(i/10),
Chapter: (i%10) + 1
});
}
console.log(array);
const book = "a3";
// const chapter = "3";//This doesn't work for the second filter!
const chapter = 3;
const getBook = array.filter(age => age.Book === book && age.Chapter === 1);
console.log(getBook);
const getBook2 = array.filter(age => age.Book === book && age.Chapter === chapter);
console.log(getBook2);