2014-10-27 57 views
1

我在express和node中创建Json API。我有这个几乎工作,但我不知道如何输出在这个表达式中的键名称。以下是我迄今为止...如何在javascript中迭代对象作为键值对

for (var k in req.body) { 
    if (req.body.hasOwnProperty(k)) { 

     if (k != 'formId' && k != 'firstName' && k != 'lastName' && k != 'email' && k != 'phone' && k != 'company' && k != 'subject' && k != 'message') { 
      additionalFields.push({ 
       k: req.body[k] 
      }); 
     } 

    } 
} 

console.log(additionalFields); 

,输出是:

[{ 
    k: '$5000 - $10000' 
}, { 
    k: ['business cards', 'web design', 'graphicdesign'] 
}] 

这几乎是对的,但我想,而不是“K”键的名称。我是JavaScript的新手,在我走的时候自我教导,所以这对我来说将是一个很好的教训。这是我想要的结果,如果有人能帮助我到达那里,那将是巨大的......

[{ 
    priceRange: '$5000 - $10000' 
}, { 
    servicesNeeded: ['business cards', 'web design', 'graphicdesign'] 
}] 

回答

3

对于你应该使用括号标记动态变量关键的名字。否则,键名将按字面解释为k。试试这个:

var obj = {}; 
obj[k] = req.body[k]; 
additionalFields.push(obj); 
+0

你的(现在删除的)评论很混乱,因为它听起来像你说你的答案在语法上不正确。 – Robert 2014-10-27 21:24:27

+0

谢谢@Robert。我在评论另一个OP的评论,他们在那里假设一个更不正确的版本。 – dfsq 2014-10-27 21:26:22