在for循环中枚举对象Javascript的特定属性

时间:2016-07-12 15:18:23

标签: javascript arrays object properties local-storage

我希望展示组成团队的玩家。 所以我创建了两个对象:一个用于玩家,一个用于团队。

    var equipes = [
            {'id_equipe' : 1 , 'id_joueur1' : 1 , 'id_joueur2' : 2 , 'id_joueur3' : 3, 'id_joueur4' : 4, 'id_joueur5' : 5, 'id_joueur6' : 6, 'id_poule' : 1, 'nbr_joueurs' : 1,'nbr_joueurs' : 6, 'nom' : "Dark vador", 'points' : 50},
            {'id_equipe' : 2 , 'id_joueur1' : 7 , 'id_joueur2' : 8 , 'id_joueur3' : 9, 'id_joueur4' : 10, 'id_joueur5' : 11, 'id_joueur6' : 12, 'id_poule' : 1, 'nbr_joueurs' : 6, 'nom' : "CEM", 'points' : 100},
            {'id_equipe' : 3 , 'id_joueur1' : 13 , 'id_joueur2' : 14 , 'id_joueur3' : 15, 'id_joueur4' : 16, 'id_joueur5' : 17, 'id_joueur6' : 18, 'id_poule' : 1, 'nbr_joueurs' : 6, 'nom' : "Test", 'points' : 25}
    ];

   // I stock with localstorage
   window.localStorage.setItem('equipes', JSON.stringify(equipes));

    var joueurs = [ 
        {'id_joueurs' : 1 , 'prenom' : "Sam" , 'nom' : "Mignot" , 'capitaine' : true},
        {'id_joueurs' : 2 , 'prenom' : "Jasmine" , 'nom' : "Test" , 'capitaine' : true},
        {'id_joueurs' : 3 , 'prenom' : "Kevin" , 'nom' : "Test2" , 'capitaine' : false},
        {'id_joueurs' : 4 , 'prenom' : "Thierry" , 'nom' : "Blabla" , 'capitaine' : false},
        {'id_joueurs' : 5 , 'prenom' : "Olivier" , 'nom' : "Blablabla" , 'capitaine' : false},
        {'id_joueurs' : 6 , 'prenom' : "Loic" , 'nom' : "Bla" , 'capitaine' : false},
        {'id_joueurs' : 8 , 'prenom' : "Sam" , 'nom' : "Mignot" , 'capitaine' : false},
        {'id_joueurs' : 9 , 'prenom' : "Sam" , 'nom' : "Mignot" , 'capitaine' : false},
        {'id_joueurs' : 10 , 'prenom' : "Sam" , 'nom' : "Mignot" , 'capitaine' : false},
        {'id_joueurs' : 11 , 'prenom' : "Sam" , 'nom' : "Mignot" , 'capitaine' : false},
        {'id_joueurs' : 12 , 'prenom' : "Sam" , 'nom' : "Mignot" , 'capitaine' : false},
        {'id_joueurs' : 13 , 'prenom' : "Sam" , 'nom' : "Mignot" , 'capitaine' : false}

    ];
    // Same thing, I stock with localstorage
    window.localStorage.setItem('joueurs', JSON.stringify(joueurs));

现在我想知道每个球队的球员名字(感谢'id_joueur1',id_joueur2',......)。所以我创建了这个函数:

function getJoueursEquipe () {

  var equipes = JSON.parse(window.localStorage.getItem("equipes")), // I recuperate the team's storage
      nbr_joueurs = equipes.nbr_joueurs, // how many player in the team, it can change
      joueurs = JSON.parse(window.localStorage.getItem("joueurs")), // I recuperate the player's storage
      joueursEquipe = null,
      id_joueur_equipe = null;

   // Here I want to recover id_joueur1, id_joueur2, id_joueur3 ... until nbr_joueurs
  for (var j = 1; j <= nbr_joueurs; j++) {
      id_joueur_equipe = "id_joueur"+j; 
      console.log(id_joueur_equipe);
      console.log(equipes.id_joueur_equipe1); //This is my problem
      // It returns "undefined 
  }

我想恢复这些元素:

  • equipes.id_joueur1
  • equipes.id_joueur2
  • equipes.id_joueur3

...

我尝试了不同的语法(如console.log(equipes.id_joueur+j)),但没有成功!

我错过了什么?我的想法是假的?任何线索? 在此先感谢:)

1 个答案:

答案 0 :(得分:0)

  

我想恢复这些元素:

     

equipes.id_joueur1 equipes.id_joueur2 equipes.id_joueur3

希望此代码段有用

var equipes = [// Rest of the objects];
// get keys form the equipes object
var m = Object.keys(equipes[0]);
// Filter only the require keys
var _filteredValue = m.filter(function(item){
 return item !=="id_equipe" && item !== "id_poule" && 
 item !== "nbr_joueurs" && item !=="nom" && item !=="points"
})

// Will loop through each object of equipes
equipes.forEach(function(item){ 
 // Will loop through each filtered item
_filteredValue.forEach(function(itemFilter){
   document.write('<pre>'+itemFilter+' -- ' +_item[itemFilter]+'</pre>')
  })

})

JSFIDDLE