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.