【发布时间】:2017-09-10 14:44:49
【问题描述】:
美好的一天。 我有一个全局数组,它必须是全局的。
var comments= [];
我有一个套接字的回调,我正在迭代它并添加值。
代码更好:
socket.on('commentAdded', function (data) {
if (data !== null) {
var stringify = JSON.stringify(data);
var json = JSON.parse(stringify);
Object.keys(users).forEach(function (key) {
if (key !== "null") {
data.eachUserId = key;
console.log("data added with id " + key + " the size of comments is " + comments.size);
comments.push(data);
}
});
console.log("comment was added");
}
socket.broadcast.emit('onCommentAdded', data);
});
在这里,我的console.Log("data added with id)... 正在正确打印所有内容,理想情况下,我想向 现有数据(即 json 数据)添加一个新值,新值的名称是 eachUserId,哪个值必须完全不同,因为我在循环中这样做,如您所见。
这就是我之后获得物品的方式。
for (var f = 0; f < Object.keys(comments).length; f++) {
var comment = comments[f];
var eachUserId = comment.eachUserId;
console.log("checking with current user id" + userId + " each user id" + eachUserId + " or each user id in [] way " + comment['eachUserId']);
if (eachUserId === userId) {
socket.emit('onCommentAdded', comment);
}
}
这里 eachUserId 始终是循环中添加的最后一项...我做错了什么?为什么push() 方法会覆盖每个值?
【问题讨论】:
标签: javascript arrays node.js loops push