2017-05-31 6 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

ありがとう!それは完璧に動作します! –

関連する問題