Javascript ForEach正在重复(重复结果)
我试图从mysql加载一些数据,但我的代码复制了结果。我的数组应该包含2个具有不同信息的对象,但我得到4个。我在module.exports中,在MySQL上有两个条目Javascript ForEach正在重复(重复结果),javascript,node.js,arrays,object,Javascript,Node.js,Arrays,Object,我试图从mysql加载一些数据,但我的代码复制了结果。我的数组应该包含2个具有不同信息的对象,但我得到4个。我在module.exports中,在MySQL上有两个条目 let serverInfo = []; loadInfo: function(){ gm.mysql.handle.query('SELECT * FROM `info`', [], function(err, res, row){ if(err) console.log(err);
let serverInfo = [];
loadInfo: function(){
gm.mysql.handle.query('SELECT * FROM `info`', [], function(err, res, row){
if(err) console.log(err);
if(res.length){
for (let i = 0; i < res.length; i++) {
res.forEach(function(zData){
let id = zData.id;
let name = zData.name;
let color = zData.color;
let icon = zData.icon;
serverInfo.push({id: id, name: name, color: color, icon: icon});
if(name == "Server") {
name = "Server in use";
}
});
}
// This code shows 4 results, the 2 existing on MySQL and another two.
console.log("Loaded "+serverInfo.length+" servers.");
console.log(serverInfo);
/* This console log shows this
[
{
id: 1,
name: 'Server',
color: 62,
icon: 50
},
{
id: 2,
name: 'Cloud',
color: 67,
icon: 3
},
{
id: 1,
name: 'Server',
color: 62,
icon: 50
},
{
id: 2,
name: 'Cloud',
color: 67,
icon: 3
}
]
*/
}
});
}
您应该为此更改for循环:
for (let i = 0; i < res.length; i++) {
const zData = res[i]
let id = zData.id;
let name = zData.name;
let color = zData.color;
let icon = zData.icon;
serverInfo.push({id: id, name: name, color: color, icon: icon});
if(name == "Server") {
name = "Server in use";
}
}
你在循环中调用它。为什么它不会重复?你必须让i=0;i