Итерация Json и получение последних элементов

#javascript #jquery #json

#javascript #jquery #json

Вопрос:

я хочу выполнить итерацию json, чтобы получить последний элемент. Я пытался найти длину json, но длина показывает 296 что-то. есть что-то, чего я не знаю .. как выполнить итерацию.

Итерация Json и получение последних элементов id: 005 and text: GHI . Я пытаюсь сделать это таким образом.

jQuery

   var json= ( JSON.stringify($(target).select2('data')) );
     alert(selections.length);    

     $.each($.parseJSON(json), function(key,value){
            var id = this.id;
            var text = this.text;
            console.log(id  "   " text);
    });
 

JSON

   [
      {
        "id": "001",
        "text": "DEF",
        "element": [
          {

          }
        ],
        "disabled": false,
        "locked": false
      },
      {
        "id": "002",
        "text": "JKL",
        "element": [
          {

          }
        ],
        "disabled": false,
        "locked": false
      },
      {
        "id": "003",
        "text": "MNO",
        "element": [
          {

          }
        ],
        "disabled": false,
        "locked": false
      },
      {
        "id": "004",
        "text": "ABC",
        "element": [
          {

          }
        ],
        "disabled": false,
        "locked": false
      },
      {
        "id": "005",
        "text": "GHI",
        "element": [
          {

          }
        ],
        "disabled": false,
        "locked": false
      }
    ]
 

Комментарии:

1. Зачем преобразовывать в JSON только для того, чтобы вернуться назад и проанализировать его?

Ответ №1:

  1. Сохраните ваш JSON в переменной
  2. Используйте varName.length-1 для достижения последнего элемента в массиве

ДЕМОНСТРАЦИЯ

 var json = [{
    "id": "001",
    "text": "DEF",
    "element": [{

    }],
    "disabled": false,
    "locked": false
}, {
    "id": "002",
    "text": "JKL",
    "element": [{

    }],
    "disabled": false,
    "locked": false
}, {
    "id": "003",
    "text": "MNO",
    "element": [{

    }],
    "disabled": false,
    "locked": false
}, {
    "id": "004",
    "text": "ABC",
    "element": [{

    }],
    "disabled": false,
    "locked": false
}, {
    "id": "005",
    "text": "GHI",
    "element": [{

    }],
    "disabled": false,
    "locked": false
}];

var $last = json[json.length - 1];
alert($last.id);
alert($last.text);
 

Ответ №2:

Вы имеете дело с массивом Javascript. Использование длины для получения последнего индекса действительно будет работать:

 var json = JSON.stringify( $(target).select2('data') );
var lastObject = json[json.length - 1];

var id = lastObject.id;
var text = lastObject.text;

console.log( id   " "   text );
 

Помните, что индексы начинаются с 0, поэтому вы должны вычесть 1 из длины, чтобы получить желаемый индекс.

Ответ №3:

var h = [
{
"id": "001",
"text": "DEF",
"element": [
{
}
],
"disabled": false,
"locked": false
},
{
"id": "002",
"text": "JKL",
"element": [
{
}
],
"disabled": false,
"locked": false
},
{
"id": "003",
"text": "MNO",
"element": [
{
}
],
"disabled": false,
"locked": false
},
{
"id": "004",
"text": "ABC",
"element": [
{
}
],
"disabled": false,
"locked": false
},
{
"id": "005",
"text": "GHI",
"element": [
{
}
],
"disabled": false,
"locked": false
}
];

 var len = h.length;
console.log(len);               //prints 5
console.log(h[len-1].id);       //prints 005
console.log(h[len-1].text);     //prints GHI