您好我正在使用节点J和我在Object.keys
input = [dog, cat, mouse, horse, pig];
上遇到问题,在下面的代码中,当我尝试运行它时,输出的第一个值有一个未定义的值。例如,假设输入变量的值为:
val
然后当程序运行时(参考下面的代码..)forEach
(Object.keys
循环和val
)的值是
var input = JSON.parse(JSON.stringify(req.body));
var val;
Object.keys(input).forEach(function(key) {
if(key!='undefined')
{
val +=' '+key+' plus the animal';
}
});
console.log(val);
=未定义的狗加动物猫加动物鼠加动物马加动物猪
我希望你们理解我的问题,谢谢。
operator>>
答案 0 :(得分:2)
将您的var val;
更改为var val = ''
。当您编写var val;
时,将为您分配undefined
,然后将您的文本连接起来。如果您将val定义为空字符串,则不会出现此问题。另外,如上所述,您不需要Object.keys,因为您已经在使用数组
var input = JSON.parse(JSON.stringify(req.body));
var val = '';
input.forEach(function(key) {
val +=' '+key+' plus the animal';
});
console.log(val);
答案 1 :(得分:0)
你的解决方案似乎很好。您只需要处理第一次迭代而不需要Object.keys
,因为输入是一个数组。
var val;
input.forEach(function(key) {
if(!val && key!='undefined')
val = key + ' plus';
else if(key!='undefined')
{
val +=' '+key+' plus the animal';
}
});
console.log(val);
答案 2 :(得分:0)
在JavaScript中,如果在声明变量时没有为变量赋值,则将其定义为defualt。所以,如果你有这样的事情:
var drink; //The value is undefined now
drink +=' Milk';// now , this will be "undefined Milk"
在您的代码中
var val;
val的值在此行中未定义
所以你只需要在声明它时将值设置为val,在你的情况下它应该是一个字符串,所以:
var val="";
现在你不再在你的输出中得到“未定义”了。