我正在尝试为一个变量(可能是一个id或多个id的数组)启动foreach。首先,我尝试验证其是否为数组,如果不是,则将其声明为仅包含1个项目的数组。
router.post("/providerQuote", function (req, res) {
console.log(req.body.idQuote);
var idQuote = [];
if(req.body.idQuote.isArray)
{
idQuote = Object.values(req.body.idQuote);
}else{
idQuote = [req.body.idQuote];
}
console.log(idQuote);
idQuote.forEach(function (quote){
console.log(quote);
});
这是控制台日志:
Server Started...
[ '5bfed54c9b0d061574d874c0', '5bfed54c9b0d061574d874bf' ]
[ [ '5bfed54c9b0d061574d874c0', '5bfed54c9b0d061574d874bf' ] ]
[ '5bfed54c9b0d061574d874c0', '5bfed54c9b0d061574d874bf' ]
这里的问题是,它以某种方式将req.body插入另一个数组。
答案 0 :(得分:0)
据我的理解,响应中的idQuote值可能是字符串,也可能是字符串数组,而您试图始终只包含一个字符串数组。如果我的说法是正确的,则只需将您的代码更改为以下内容:
router.post("/providerQuote", function (req, res) {
console.log(req.body.idQuote);
var idQuote = req.body.idQuote;
if(!Array.isArray(idQuote)) {
idQuote = [idQuote];
}
console.log(idQuote);
idQuote.forEach(function (quote){
console.log(quote);
});
如果您的idQuote当前不是数组,它将简单地包装在数组中。
通过将idQuote变量默认为req.body.idQuote,我正在做一些事情:
也知道isArray是Array上的方法。由于没有括号,因此您基本上是在检查当前对象是否具有isArray方法,并且我非常有信心它都没有(因为它是Array类上的静态方法),这随后使您失望放入将其包裹在数组中的else中。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
答案 1 :(得分:0)
我认为您可以尝试
if ( Array.isArray(req.body.idQuote) ) {
// Perform your operations here
} else {
idQuote.push(req.body.idQuote)
}