2017-01-04 9 views
-5

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

var notif_count = data.pop(); 

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

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

EDIT 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]": "[email protected]", 
     "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]": "[email protected]", 
     "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]": "[email protected]", 
     "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]": "[email protected]", 
     "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]": "[email protected]", 
     "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]": "[email protected]", 
     "updated_by_user[person_name]": "Jamie Lowe", 
     "value": "" 
    } 
    ], 
    2 
] 

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

EDIT: Полный код ПРИМЕР

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); 
+1

[не может воспроизвести] (http://imgs.xkcd.com/comics/cnr.png) (хром, FF). – ASDFGerte

+1

Я только что вставил этот массив в свою консоль и назвал '.pop()' успешно. Покажите нам код, который вы используете для вызова 'pop' – Michael

+0

здесь - [пример] (http://jsbin.com/kotadanigo/edit?js,console) –

ответ

0

индексации использования массива. Проверьте 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.

0

Отредактировано исходя из отзывов, полученных вами в комментариях. Сначала необходимо использовать 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'] 
+0

К сожалению, это не работает для меня ... Я думаю, что это, вероятно, связано с выходом, похожим на массив, это на самом деле строка. Как преобразовать его в массив? –

+0

см. Комментарий выше, сначала используйте JSON.parse(). – oli5679