Javascript express.js中的数组foreach错误

Javascript express.js中的数组foreach错误,javascript,arrays,express,Javascript,Arrays,Express,我想为我的网站生成动态搜索。解析查询字符串后,我使用req.query获取JS对象。我在foreach遇到了名称可变的价格问题。 网址是: 错误消息是: [‘1’、‘2’] 价值:1 值:未定义 {'$or':未定义,性别:{'$in':['men','women']} 未定义的为什么得到{'$or':未定义的,…} 您正在这样做: query.$or = price.forEach(...) 但是作为。所以,这很正常。你应该改用。它将返回一个包含两个元素的新数组: query.$or =

我想为我的网站生成动态搜索。解析查询字符串后,我使用req.query获取JS对象。我在foreach遇到了名称可变的价格问题。 网址是:

错误消息是:

[‘1’、‘2’]

价值:1

值:未定义

{'$or':未定义,性别:{'$in':['men','women']}


未定义的

为什么得到
{'$or':未定义的,…}

您正在这样做:

query.$or = price.forEach(...)
但是作为。所以,这很正常。你应该改用。它将返回一个包含两个元素的新数组:

query.$or = price.map(...)
为什么得到
值:未定义

您使用的是
currentarray
参数,但这不是您得到的数组,而是当前价格。因此,在您的示例中,
currentarray[1]
等于
'2'[1]
,即
未定义的

可能的解决方案

如果这样编写,您的代码会更简单:

query.$or = price.map(function (currentPrice) {
    switch(currentPrice) {
        case '1': return {'price': {'$gte': 0 ,   '$lte': 100} };
        case '2': return {'price': {'$gte': 100 , '$lte': 150} };
        case '3': return {'price': {'$gte': 150 , '$lte': 200} };
        case '4': return {'price': {'$gte': 200 , '$lte': 1000}};
        default : return {};
    }
});

为什么得到
{'$or':未定义,…}

您正在这样做:

query.$or = price.forEach(...)
但是作为。所以,这很正常。你应该改用。它将返回一个包含两个元素的新数组:

query.$or = price.map(...)
为什么得到
值:未定义

您使用的是
currentarray
参数,但这不是您得到的数组,而是当前价格。因此,在您的示例中,
currentarray[1]
等于
'2'[1]
,即
未定义的

可能的解决方案

如果这样编写,您的代码会更简单:

query.$or = price.map(function (currentPrice) {
    switch(currentPrice) {
        case '1': return {'price': {'$gte': 0 ,   '$lte': 100} };
        case '2': return {'price': {'$gte': 100 , '$lte': 150} };
        case '3': return {'price': {'$gte': 150 , '$lte': 200} };
        case '4': return {'price': {'$gte': 200 , '$lte': 1000}};
        default : return {};
    }
});

你用什么做前端?你用什么做前端?