Javascript Immutable.js中的列表列表

Javascript Immutable.js中的列表列表,javascript,list,immutable.js,Javascript,List,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)

我想要列表并将元素推到列表中,但我一直得到没有元素的列表,我想不出原因

我从

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 [] ]

列表中没有元素。

当然,列表中不会有元素

当你这样做的时候

list.get(0).push(2);
通过将
2
按入
0
位置,您并没有在该位置对元素进行变异,正如您假设的那样,您将得到一个新的
列表,这是执行该操作的结果,这是不可变的点,而不是对原始集合进行变异,您将得到一个新的

这就是您如何使用Immutable执行您试图执行的操作:

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]]


当然,这个过程中不会有任何元素

当你这样做的时候

list.get(0).push(2);
通过将
2
按入
0
位置,您并没有在该位置对元素进行变异,正如您假设的那样,您将得到一个新的
列表,这是执行该操作的结果,这是不可变的点,而不是对原始集合进行变异,您将得到一个新的

这就是您如何使用Immutable执行您试图执行的操作:

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]]


你确定这个问题与javascript有关吗?OP讨论的是Immutable的列表集合,并将其正确地包含在
require
@RomanPerekhrest中。你读过代码了吗?很确定是JSrelated@MarcoScabbiolo问题是,许多全栈开发人员都在努力推动静态类型、类和类似问题的东西,并希望/期望它们能够像在各自的强类型服务器端语言中一样工作。他们不知道JavaScript的内部工作方式如何,它如何强大以及为什么强大,以及如何利用强类型语言中不可用的语言特性。我在看你们,“让我们成为新的变量”,“胖箭是新的函数”和“类是新的对象”的人@姆霍德斯完全同意你的看法。
class
正被大力推进,分类法正在进入JS,这一事实令人担忧。TypeScript也取得了很大的进展,我不认为这是一件坏事,但我开始关注只使用TypeScript编写的代码,因为有些人离不开“OOP”和分类法。但这毕竟是一个社区,JS自推出以来就具备了这些“适用于其他语言”的功能,它仍然是一种令人惊叹的语言,让我们期待最好的结果。你确定这个问题与javascript有关吗?OP讨论的是Immutable的列表集合,并将其正确地包含在
require
@RomanPerekhrest中。你读过代码了吗?很确定是JSrelated@MarcoScabbiolo问题是,许多全栈开发人员都在努力推动静态类型、类和类似问题的东西,并希望/期望它们能够像在各自的强类型服务器端语言中一样工作。他们不知道JavaScript的内部工作方式如何,它如何强大以及为什么强大,以及如何利用强类型语言中不可用的语言特性。我在看你们,“让我们成为新的变量”,“胖箭是新的函数”和“类是新的对象”的人@姆霍德斯完全同意你的看法。
class
正被大力推进,分类法正在进入JS,这一事实令人担忧。TypeScript也取得了很大的进展,我不认为这是一件坏事,但我开始关注只使用TypeScript编写的代码,因为有些人离不开“OOP”和分类法。但这毕竟是一个社区,JS自面世以来就具备了这些“适用于其他语言”的功能,而且它仍然是一种令人惊叹的语言,让我们期待最好的结果。毕竟,它的名称是Immutable.JS,所以您希望您的数据结构是不可变的:)(PS:Good link to add:)这完全有道理。非常感谢你的帮助!!毕竟,它的名称是Immutable.js,所以您希望您的数据结构是不可变的:)(PS:Good link to add:)这完全有道理。非常感谢你的帮助!!