2017-05-31 64 views
0

我是新手在JavaScript編程,我有一個陣列的問題: 當我做一個數組交換之間的陣列和另一個位置在循環中的位置,所有數組的位置被轉換爲相同的值。也就是說,陣列位置與最後添加的對象相同。 我離開的代碼,以幫助我知道發生了什麼:該陣列的所有位置被修改爲相同的值

.controller("UserAndEditLanguagePanel", function (usersFactory, userLanguagesFactory, LanguageFactory) { 
     var vm = this; 
     vm.userSesion = {}; 
     var objAux = {}; 
     objAux.langname = ""; 
     objAux.level = ""; 
     vm.lenguajesUsuario = new Array(); 

     vm.funciones = { 
      cargarPerfil: function() { 
       usersFactory.obtenerUsuarioSesion().then(function (respuesta) { 
        vm.userSesion.idu = respuesta.idu; 
        vm.userSesion.username = respuesta.username; 
        vm.userSesion.email = respuesta.email; 

        console.log("Se han obtenido los datos de usuario de la sesión correctamente. Respuesta: ", respuesta); 
        userLanguagesFactory.obtenerLenguagesUsuarios().then(function (lenguajesUsuarios) { 
         console.log("Se han obtenidos los datos de los lenguajes de los usuarios. Respuesta: ", lenguajesUsuarios); 
         LanguageFactory.obtenerLenguajes().then(function (listaLenguajes) { 
          console.log("Se han traido los datos de los lenguajes. Respuesta: ", listaLenguajes); 
          console.log(lenguajesUsuarios); 


          for (var i = 0; i < lenguajesUsuarios.length; i++) { 
           if (lenguajesUsuarios[i].idu == vm.userSesion.idu) { 
            objAux.langname = listaLenguajes[lenguajesUsuarios[i].idl].langname; 
            objAux.level = lenguajesUsuarios[i].level; 
            vm.lenguajesUsuario.push(objAux); 
           } 
          } 

非常感謝你提前!

+0

對不起,問題是位於循環中,與數組「lenguajesUsuarios」和對象「objAux」有關。 –

+2

如果您在沒有任何人的幫助的情況下在2分鐘內找到解決方案,您可以刪除此問題 –

回答

0
Need to initialise the object of objAux inside for loop and and dont crete and initialise the same object before the for loop it will work and fine. 
.controller("UserAndEditLanguagePanel", function (usersFactory, userLanguagesFactory, LanguageFactory) { 
     var vm = this; 
     vm.userSesion = {}; 
     //comment to below object creation and initialisation of object "objAux " 
     /*var objAux = {}; 
     objAux.langname = ""; 
     objAux.level = "";*/ 
     vm.lenguajesUsuario = new Array(); 

     vm.funciones = { 
      cargarPerfil: function() { 
       usersFactory.obtenerUsuarioSesion().then(function (respuesta) { 
        vm.userSesion.idu = respuesta.idu; 
        vm.userSesion.username = respuesta.username; 
        vm.userSesion.email = respuesta.email; 

        console.log("Se han obtenido los datos de usuario de la sesión correctamente. Respuesta: ", respuesta); 
        userLanguagesFactory.obtenerLenguagesUsuarios().then(function (lenguajesUsuarios) { 
         console.log("Se han obtenidos los datos de los lenguajes de los usuarios. Respuesta: ", lenguajesUsuarios); 
         LanguageFactory.obtenerLenguajes().then(function (listaLenguajes) { 
          console.log("Se han traido los datos de los lenguajes. Respuesta: ", listaLenguajes); 
          console.log(lenguajesUsuarios); 


          for (var i = 0; i < lenguajesUsuarios.length; i++) { 
           if (lenguajesUsuarios[i].idu == vm.userSesion.idu) { 
            var objAux = { 
             langname:'', 
             level:'' 
            } 
            objAux.langname = listaLenguajes[lenguajesUsuarios[i].idl].langname; 
            objAux.level = lenguajesUsuarios[i].level; 
            vm.lenguajesUsuario.push(objAux); 
           } 
          } 
+0

謝謝!它完美的作品! –