Javascript, получающий последний элемент массива.pop(), не является функцией

Я пытаюсь использовать функцию.pop(), чтобы получить последний элемент моего массива (это счетчик, который я затем отображаю на своей веб-странице). Я довольно новичок в Javascript / Jquery, поэтому я немного борюсь с этим...

var notif_count = data.pop();

Я получаю ошибку "Uncaught TypeError: data.pop не является функцией"

Мои данные в консоли выглядят как многомерный массив, но я не уверен? Вот пример вывода:

РЕДАКТИРОВАТЬ 2 - вывод представляет собой строку, содержащую символы, показанные здесь.

[
  [
    {
      "_can_chaccess": true,
      "_can_chown": true,
      "_can_delete": true,
      "_can_modify": true,
      "_can_read": true,
      "created_at": "Wed Jan 04 17:33:13 UTC 2017",
      "created_by": 25206,
      "created_by_user[login_name]": "jamie.lowe@workbooks.com",
      "created_by_user[person_name]": "Jamie Lowe",
      "created_through": "Workbooks",
      "created_through_reference": "",
      "id": 117662,
      "imported": false,
      "key": "notifications",
      "key10": "",
      "key11": "",
      "key12": "",
      "key13": "",
      "key14": "",
      "key15": "",
      "key16": "",
      "key17": "",
      "key18": "",
      "key19": "",
      "key2": "292801",
      "key3": "47930",
      "key4": "CASE-32109",
      "key5": "",
      "key6": "",
      "key7": "",
      "key8": "",
      "key9": "",
      "lock_version": 0,
      "owner[login_name]": "jamie.lowe@workbooks.com",
      "owner[person_name]": "Jamie Lowe",
      "owner_id": 25206,
      "type": "Private::Automation::ApiData",
      "updated_at": "Wed Jan 04 17:33:13 UTC 2017",
      "updated_by": 25206,
      "updated_by_user[login_name]": "xxxx@workbooks.com",
      "updated_by_user[person_name]": "Jamie Lowe",
      "value": ""
    },
    {
      "_can_chaccess": true,
      "_can_chown": true,
      "_can_delete": true,
      "_can_modify": true,
      "_can_read": true,
      "created_at": "Wed Jan 04 17:23:21 UTC 2017",
      "created_by": 25206,
      "created_by_user[login_name]": "jamie.lowe@workbooks.com",
      "created_by_user[person_name]": "Jamie Lowe",
      "created_through": "Workbooks",
      "created_through_reference": "",
      "id": 117660,
      "imported": false,
      "key": "notifications",
      "key10": "",
      "key11": "",
      "key12": "",
      "key13": "",
      "key14": "",
      "key15": "",
      "key16": "",
      "key17": "",
      "key18": "",
      "key19": "",
      "key2": "292801",
      "key3": "47930",
      "key4": "CASE-32106",
      "key5": "",
      "key6": "",
      "key7": "",
      "key8": "",
      "key9": "",
      "lock_version": 2,
      "owner[login_name]": "jamie.lowe@workbooks.com",
      "owner[person_name]": "Jamie Lowe",
      "owner_id": 25206,
      "type": "Private::Automation::ApiData",
      "updated_at": "Wed Jan 04 17:30:39 UTC 2017",
      "updated_by": 25206,
      "updated_by_user[login_name]": "xxxx@workbooks.com",
      "updated_by_user[person_name]": "Jamie Lowe",
      "value": ""
    }
  ],
  2
]

В основном я пытаюсь получить номер 2 в конце массива прямо перед закрытием] - Как мне это сделать?

РЕДАКТИРОВАТЬ: ПРИМЕР ПОЛНОГО КОДА

var notif_count = data[1]; <!-- Last element in the array which is the count of notifications calculated server side by PHP -->                  
                console.log(notif_count);                    
                $('#count').text(notif_count);

2 ответа

Отредактировано на основе отзывов, которые вы дали в комментариях. Сначала вам нужно использовать JSON.parse для преобразования строки в список, а затем выбрать последний элемент в индексе:

var data = '["a","b","c"]';
data_2 = JSON.parse(data)
var notif_count = data_2[data_2.length-1];
console.log(notif_count) --> 'c'
console.log(data_2) --> ['a','b','c']

Используйте индексирование массива. Проверьте MDN для более подробной информации о массивах в JS.

Для вашей проблемы это будет работать

var notif_count = data[1] 
//index 1 will give 2nd element, as array indexing is zero indexing.

А также var notif_count = data.pop(); работает для меня. Проверено на FF консоли. Тот же пример без разницы.

Обратите внимание на символы новой строки в строках JSON.

Другие вопросы по тегам