2017-02-01 5 views
0

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

Я начинаю с

List([ List([]), List([]) ]); 

, и я хочу, чтобы иметь

List([ List([2,4]), List([3,6]) ]); 

код, который я есть имеет следующий вид:

const { List } = require('immutable') 

list = List([ List([]), List([]) ]); 
list.get(0).push(2); 
list.get(1).push(3); 
list.get(0).push(4); 
list.get(1).push(6); 

console.log(list); 

Когда я бегу, он печатает:

List [ List [], List [] ] 

В списках нет элементов.

+0

являются вы уверены, что вопрос относительно javascript? – RomanPerekhrest

+0

Если я не ошибаюсь, immutable.js создает неизменяемые массивы, что означает, что данные не могут быть изменены ... вы пытаетесь передать значения в неизменяемый массив. Зачем ты это делаешь? – mhodges

+1

OP говорит о коллекции списка Immutable и включает его правильно с 'require'. –

ответ

2

Конечно, в List не будет элементов.

Когда вы

list.get(0).push(2); 

Вы не мутирует элемент в положении 0 нажатием 2 в него, как Вы предполагаете, вы получаете новый List, что это результат того, что операция , это точка неизменяемости, вместо того, чтобы мутировать исходную коллекцию, вы получаете новую новую.

Это, как вы делаете то, что вы пытаетесь сделать с незыблемыми:

const { List } = require('immutable') 

list = List([ List([]), List([]) ]); 
list = list.set(0, list.get(0).push(2)); 
list = list.set(1, list.get(1).push(3)); 
list = list.set(0, list.get(0).push(4)); 
list = list.set(1, list.get(1).push(6)); 

console.log(list); 

Список [Список [2, 4], список [3, 6]]

+0

В конце концов, это называется Immutable.js, поэтому вы ожидаете, что структуры данных должны быть неизменными * :) (PS: Хорошая ссылка для добавления: https://facebook.github.io/immutable-js/docs/#/List) – Li357

+0

Это имеет смысл. Большое вам спасибо за вашу помощь!! –

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