为什么使用withMutations会得到不同的结果?

奥斯卡特

我是否误解了它的目的或作用方式?

var menuItems = Immutable.List.of(
  { parent_id: 0, id: 1 },
  { parent_id: 1, id: 2 },
  { parent_id: 1, id: 3 }
);

var results1 = menuItems
  .filter(function(menuItem) { return menuItem.parent_id === 1; }) // Filter out items with parent_id = 1
  .sort(function(childA, childB) { return childA.sort_order - childB.sort_order; }); // Sort them by sort_order

var results2 = menuItems.withMutations(function(list) {
  list
    .filter(function(menuItem) { return menuItem.parent_id === 1; }) // Filter out items with parent_id = 1
    .sort(function(childA, childB) { return childA.sort_order - childB.sort_order; }); // Sort them by sort_order
});

console.log(results1.size); // 2
console.log(results2.size); // 3

我的理解是,它们将产生相同的结果,但是withMutations由于操作的链接,结果会更快。

奥利姆

你误会了withMutations这样做的目的是为您提供一个临时场所,您可以在其中实际更改列表而不是创建副本。

一个例子是:

var results2 = menuItems.withMutations(function(list) {
  list.shift()
});

在您的代码中,您可以使用里面的filterwithMutations过滤器会创建一个新数组,并且不会修改原始数组,因此您withMutations什么也不做。

我认为您最好完全不使用withMutations如果在某个时候您认为“如果只修改数组而不制作副本,这会容易得多”,则可以转到withMutations

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Java和Go的gzip会得到不同的结果?

来自分类Dev

为什么抛出OperationCanceledException会得到不同的结果?

来自分类Dev

为什么我偶尔会得到不同的结果?【C语言】

来自分类Dev

为什么根据使用的功能会得到不同的结果?(SQL Server)

来自分类Dev

为什么在使用for和while循环时会得到不同的结果?

来自分类Dev

为什么会得到以下结果?

来自分类Dev

为什么使用相同的随机种子,相同的计算机,相同的程序会得到不同的结果

来自分类Dev

射弹物理-在Unity中使用Time.sinceLevelLoad而不是Time.delatime时为什么会得到不同的结果?

来自分类Dev

在CNN的输出层中使用softmax而不是Sigig时,为什么会得到截然不同的结果?

来自分类Dev

在递归问题中使用list.pop()和list = list [:-1]时,为什么会得到不同的结果

来自分类Dev

为什么同一设计会得到两个不同的结果?

来自分类Dev

当它们应该相同时,为什么会得到不同的布尔结果?

来自分类Dev

将PS脚本存储在变量中时,为什么会得到不同的结果?

来自分类Dev

在打印语句注释掉的情况下运行为什么会得到不同的结果?

来自分类Dev

为什么在python中内置和定义的FFT会得到不同的结果?

来自分类Dev

为什么运行批处理文件会得到不同的结果?

来自分类Dev

为什么用kill -0(<jobspec> | pid)会得到不同的结果

来自分类Dev

为什么将列表理解与带有异步的协程一起使用时,为什么会得到不同的结果?

来自分类Dev

为什么在同一个类上使用不同的(shared_ptr和普通)指针构造函数会得到不同的结果?

来自分类Dev

在Holm和Bonferroni方法中使用p.adjust时为什么会得到相同的结果?

来自分类Dev

为什么在使用 ResultSet 时会得到一个额外的结果为 null?

来自分类Dev

为什么在使用 scipy.stats.linregress vs numpy.polyfit(deg=1) 进行线性回归时会得到不同的结果

来自分类Dev

为什么使用列表与使用元组时得到不同的结果?

来自分类Dev

在迭代器上使用过滤器时,为什么会得到不同的参数类型?

来自分类Dev

为什么在使用sh和bash时会得到不同的输出?

来自分类Dev

当我使用 sp_executesql 运行查询时,为什么会得到不同的行顺序?

来自分类Dev

为什么我会得到不同的发行版?

来自分类Dev

使用for循环遍历数组会得到不同的结果

来自分类Dev

为什么将ks.boot输出应用于矢量和xts对象时会得到不同的结果?

Related 相关文章

  1. 1

    为什么Java和Go的gzip会得到不同的结果?

  2. 2

    为什么抛出OperationCanceledException会得到不同的结果?

  3. 3

    为什么我偶尔会得到不同的结果?【C语言】

  4. 4

    为什么根据使用的功能会得到不同的结果?(SQL Server)

  5. 5

    为什么在使用for和while循环时会得到不同的结果?

  6. 6

    为什么会得到以下结果?

  7. 7

    为什么使用相同的随机种子,相同的计算机,相同的程序会得到不同的结果

  8. 8

    射弹物理-在Unity中使用Time.sinceLevelLoad而不是Time.delatime时为什么会得到不同的结果?

  9. 9

    在CNN的输出层中使用softmax而不是Sigig时,为什么会得到截然不同的结果?

  10. 10

    在递归问题中使用list.pop()和list = list [:-1]时,为什么会得到不同的结果

  11. 11

    为什么同一设计会得到两个不同的结果?

  12. 12

    当它们应该相同时,为什么会得到不同的布尔结果?

  13. 13

    将PS脚本存储在变量中时,为什么会得到不同的结果?

  14. 14

    在打印语句注释掉的情况下运行为什么会得到不同的结果?

  15. 15

    为什么在python中内置和定义的FFT会得到不同的结果?

  16. 16

    为什么运行批处理文件会得到不同的结果?

  17. 17

    为什么用kill -0(<jobspec> | pid)会得到不同的结果

  18. 18

    为什么将列表理解与带有异步的协程一起使用时,为什么会得到不同的结果?

  19. 19

    为什么在同一个类上使用不同的(shared_ptr和普通)指针构造函数会得到不同的结果?

  20. 20

    在Holm和Bonferroni方法中使用p.adjust时为什么会得到相同的结果?

  21. 21

    为什么在使用 ResultSet 时会得到一个额外的结果为 null?

  22. 22

    为什么在使用 scipy.stats.linregress vs numpy.polyfit(deg=1) 进行线性回归时会得到不同的结果

  23. 23

    为什么使用列表与使用元组时得到不同的结果?

  24. 24

    在迭代器上使用过滤器时,为什么会得到不同的参数类型?

  25. 25

    为什么在使用sh和bash时会得到不同的输出?

  26. 26

    当我使用 sp_executesql 运行查询时,为什么会得到不同的行顺序?

  27. 27

    为什么我会得到不同的发行版?

  28. 28

    使用for循环遍历数组会得到不同的结果

  29. 29

    为什么将ks.boot输出应用于矢量和xts对象时会得到不同的结果?

热门标签

归档