如何删除' undefined'在forEach的Object.keys上

时间:2017-04-28 02:52:07

标签: javascript node.js foreach

您好我正在使用节点J和我在Object.keys input = [dog, cat, mouse, horse, pig]; 上遇到问题,在下面的代码中,当我尝试运行它时,输出的第一个值有一个未定义的值。例如,假设输入变量的值为:

val

然后当程序运行时(参考下面的代码..)forEachObject.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>>

3 个答案:

答案 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="";

现在你不再在你的输出中得到“未定义”了。