Abdus Sattar Bhuiyan
Abdus Sattar Bhuiyan

Reputation: 3074

How to get last json object from json array?

I have a json array at smsPackageList as like:

[{"name":"Basic","min_quantity":1250,"max_quantity":2500,"validity":"2020-07-02 15:58:18","rate":0.2},{"name":"Delux","min_quantity":2501,"max_quantity":5000,"validity":"2020-07-02 15:58:18","rate":0.19},{"name":"Classic","min_quantity":50001,"max_quantity":70000,"validity":"2020-07-02 16:03:54","rate":0.18},{"name":"Business","min_quantity":70001,"max_quantity":90000,"validity":"2020-07-02 16:03:54","rate":17},{"name":"Corporate","min_quantity":90001,"max_quantity":1000000,"validity":"2020-07-02 16:05:07","rate":0.15}]

I want to get the value of the max_quantity of the last row. I am trying as follows:

    var n = smsPackageList.length;
    var minSms = smsPackageList[0].min_quantity;
    var maxSms = smsPackageList[n-1].min_quantity;

but console.log(minSms) and console.log(maxSms) produce undefined. Whats wrong in my approach, Any idea?

Upvotes: 0

Views: 93

Answers (3)

Always Helping
Always Helping

Reputation: 14570

A good way to do this is use forEach function on your array data and then . and if condition on the name you are trying yo access

You can read more about forEach here

var data = [{
  "name": "Basic",
  "min_quantity": 1250,
  "max_quantity": 2500,
  "validity": "2020-07-02 15:58:18",
  "rate": 0.2
}, {
  "name": "Delux",
  "min_quantity": 2501,
  "max_quantity": 5000,
  "validity": "2020-07-02 15:58:18",
  "rate": 0.19
}, {
  "name": "Classic",
  "min_quantity": 50001,
  "max_quantity": 70000,
  "validity": "2020-07-02 16:03:54",
  "rate": 0.18
}, {
  "name": "Business",
  "min_quantity": 70001,
  "max_quantity": 90000,
  "validity": "2020-07-02 16:03:54",
  "rate": 17
}, {
  "name": "Corporate",
  "min_quantity": 90001,
  "max_quantity": 1000000,
  "validity": "2020-07-02 16:05:07",
  "rate": 0.15
}]

var min = document.getElementById('min_qt')
var max = document.getElementById('max_qt')

data.forEach(function(element){
   if (element.name === 'Corporate') {
         min.textContent = 'Min = '+element.min_quantity
         max.textContent = 'Max = '+element.max_quantity
   }
})
<div id="min_qt"></div>

<div id="max_qt"></div>

Upvotes: 1

Rohit Tagadiya
Rohit Tagadiya

Reputation: 3730

Try this..

var smsPackageList = [{"name":"Basic","min_quantity":1250,"max_quantity":2500,"validity":"2020-07-02 15:58:18","rate":0.2},{"name":"Delux","min_quantity":2501,"max_quantity":5000,"validity":"2020-07-02 15:58:18","rate":0.19},{"name":"Classic","min_quantity":50001,"max_quantity":70000,"validity":"2020-07-02 16:03:54","rate":0.18},{"name":"Business","min_quantity":70001,"max_quantity":90000,"validity":"2020-07-02 16:03:54","rate":17},{"name":"Corporate","min_quantity":90001,"max_quantity":1000000,"validity":"2020-07-02 16:05:07","rate":0.15}];

console.log("min_quantity : ", smsPackageList[smsPackageList.length - 1].min_quantity);
console.log("max_quantity : ", smsPackageList[smsPackageList.length - 1].max_quantity);

Upvotes: 1

elobuho
elobuho

Reputation: 131

var smsPackageList = [{"name":"Basic","min_quantity":1250,"max_quantity":2500,"validity":"2020-07-02 15:58:18","rate":0.2},{"name":"Delux","min_quantity":2501,"max_quantity":5000,"validity":"2020-07-02 15:58:18","rate":0.19},{"name":"Classic","min_quantity":50001,"max_quantity":70000,"validity":"2020-07-02 16:03:54","rate":0.18},{"name":"Business","min_quantity":70001,"max_quantity":90000,"validity":"2020-07-02 16:03:54","rate":17},{"name":"Corporate","min_quantity":90001,"max_quantity":1000000,"validity":"2020-07-02 16:05:07","rate":0.15}];

var n = smsPackageList.length;
var maxSms = smsPackageList[n-1].max_quantity;
console.log(maxSms);

Produce the correct result.

Upvotes: 1

Related Questions