Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ForEach正在重复(重复结果)_Javascript_Node.js_Arrays_Object - Fatal编程技术网

Javascript ForEach正在重复(重复结果)

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);

我试图从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);
            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