陷入JavaScript节点表达过滤

时间:2019-01-16 17:30:17

标签: javascript express filter

当我尝试使用(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);

2 个答案:

答案 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);