2016-11-29 2 views
0

Я использую console.log('errors: ' + password.get('errors'));, чтобы увидеть, что возвращается из password.get('errors')); и в консоли это возвращается:Получить элемент из отображенного массива

List [ Map { "id": "validation.password.tooLong", "defaultMessage": "La password deve avere massimo {max} caratteri", "values": Map { "max": 16 } } ] 

Я хочу, чтобы получить доступ к элементу "validation.password.tooLong" из этого отображенного массива, я не уверен, как чтобы это сделать. Я не уверен на 100%, что это сопоставленный массив, я предполагаю, что это из-за [Map... выше.

ответ

2

Я предполагаю, что вы используете immutable.js, таким образом, получите необходимые данные, необходимые для доступа к этому свойству с помощью методов этих классов:

const errors = password.get('errors'); 
const errorId = errors.get(0).get('id'); 

В других ответах вы получили undefined, потому что List является экземпляром класса List, который не имеет свойства 0, но имеет метод get, который возвращает значение из массива, хранящегося в закрытии. Это специальное решение для предотвращения мутации и обеспечения неизменности (если вы хотите обновить значение, вы должны использовать set(0, value) вместо myList[0] = value, так что нет доступа через [0]). То же самое с Картой (Карта - неизменный объект, который хранит key: value).

Подробнее об этом можно узнать здесь: Immutable.js docs (но я не уверен, что у вас есть именно immutable.js, есть много похожих библиотек, поэтому посмотрите, что именно вы используете).

+0

Я использую immutable yes, но вы не можете получить его таким образом. 'Не могу прочитать get undefined' – DaveDavidson

+0

Получаю ошибку' errors.get не является функцией' – DaveDavidson

+0

hm ... Это должно быть примерно так: [jsfiddle] (https://jsfiddle.net/b96p2qs9/). Итак, 'password.get ('errors'). Get (0)' возвращает 'undefined'? Если да - похоже, что это строка, а не объекты ImmutableJS. Итак, есть два способа работать с ним: –

0

Вы можете попробовать ниже код:

var response = password.get('errors'); 
var result = response[0]['id']; 
+0

Этот возврат не может прочитать свойство неопределенного. – DaveDavidson

+0

Что такое ответ? можете ли вы показать мне больше информации о вашей ситуации? –

0

Чтобы получить значение из карты, которую нужно использовать get() функции как

var res = password.get('errors'); 
var ans = res[0].get('id'); 
+0

Я получаю сообщение об ошибке Не могу прочитать свойство 'get' of undefined – DaveDavidson

Смежные вопросы