0

I would like to get a specific item in a $.each based on a variable. How do to do so?

var label = 'email';
//var label = 'name';

var result = {
  success: true,
  data: [{
    id: 1,
    email: 'mark@domain.com',
    name: 'Mark'
  }, {
    id: 2,
    email: 'chris@domain.com',
    name: 'Chris'
  }, {
    id: 3,
    email: 'laura@domain.com',
    name: 'Laura'
  }]
}

$.each(result.data, function(i, item) {
  var getID = item.id;
  // var getLabel = item.email;  // works
  //var getLabel = item.''+label+''; // not working
  var getLabel = item[label]; // works
  console.log('getLabel:');
  console.log(getLabel);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

Fiddle: https://jsfiddle.net/tzm5bafu/

Philipp M
  • 3,306
  • 5
  • 36
  • 90

1 Answers1

1

Use [] access:

var label = 'email';

var array = {
  success: true,
  data: [ { id: 1, email: 'mark@domain.com', name: 'Mark' },
          { id: 2, email: 'chris@domain.com', name: 'Chris' },
          { id: 3, email: 'laura@domain.com', name: 'Laura' } ]
};
    
$.each(array.data, function (i, item) {
    var getID = item.id;
    var getLabel = item[label];
    console.log('getLabel:');
    console.log(getLabel);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Cerbrus
  • 70,800
  • 18
  • 132
  • 147