[英]How can I use all function arguments inside javascript Object.assign method
我正在使用nodejs
& express 制作一个服务器,用户可以在其中请求一些数据和服务器发送响应。 但是,数据是数组,我想向用户发送一个 json 响应。 因此,我使用了数组的forEach()
方法并使用Object.assign()
,以便我可以获取对象。 但问题是我不能使用forEach()
方法的 'index' 参数,而在回调函数中正确使用了 'value' 参数。 当我只使用 'index' 参数时,我的代码运行正常,但我想同时使用这两个参数。
route.get('/getGPX/:number', passport.authenticate('jwt', { session: false }), (req, res) => {
gpx.find({ username: req.user.username }, (err, result) => {
if (err) console.log(err);
if (result) {
if (result.length === 0) {
res.end();
console.log('ended')
}
else {
var jsonRes = {};
result.forEach((value, index) => {
我可以使用参数中的“值”但不能使用“索引”
jsonRes = Object.assign({ index: value.data }, jsonRes);
})
res.json({data: jsonRes});
}
}
})
我什至尝试使用global var
,但即使它不起作用,我怎样才能同时使用 index 和 value 参数
你想要的 JSON 结构是什么?
如果你想要一个像这样的json:
{
0: "my first value",
1: "second"
}
您只是错过了索引周围的[]
,在这里您将“索引”作为键而不是索引的值。 所以你在每次迭代中覆盖索引键。
这是使用 index 的值作为 json 中的键的代码。
jsonRes = Object.assign({[index]: value.data}, jsonRes)
有关更多示例的工作示例,请参见此处: https : //repl.it/@Benoit_Vasseur/nodejs-playground
Object.assign
改变了最左边的参数。 它不会产生新对象。 由于每次 jsonRes 将成为最后一个结果时,您都会传递一个文字对象。
将 jsonRes 放在左侧 - Object.assign(jsonRes, {index: value.data})
您可能想要使用简单的reduce
而不是forEach
和Object.assign
:
} else {
var jsonRes = result.reduce((r, v, i) => {r[i] = v.data; return r}, {});
res.json({data: jsonRes});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.