2017-05-31 8 views
0

Ich bin Neuling Programmierung in JavaScript und ich habe einige Probleme mit einem Array: Wenn ich einen Datenaustausch zwischen einem Array und einer anderen Position in einer Schleife zu positionieren, alle Die Positionen des Arrays werden in denselben Wert konvertiert. Das heißt, die Array-Positionen sind die gleichen wie das zuletzt hinzugefügte Objekt. Ich lasse den Code zu helfen, mich zu wissen, was passiert ist:Alle Positionen des Arrays sind auf den gleichen Wert geändert

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

Vielen Dank im Voraus!

+0

Entschuldigung, das Problem befindet sich in der Schleife, bezogen auf das Array "lenguajesUsuarios" und das Objekt "objAux". –

+2

Sie können diese Frage löschen, wenn Sie die Lösung innerhalb von 2 Minuten nach dem Hinzufügen ohne jemandes Hilfe gefunden haben –

Antwort

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

Vielen Dank! Es funktioniert perfekt !! –

Verwandte Themen