gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:09:57 24 4
gpt4 key购买 nike

我是否误解了它的用途或它的工作原理?

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。它的目的是为您提供一个临时 Playground ,您可以在其中实际更改列表而不是创建副本。

一个例子是:

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

在您的代码中,您使用 filterwithMutations 中。 Filter 创建一个新数组并且不修改原始数组,因此您的 withMutations 什么都不做。

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

关于javascript - 为什么使用 withMutations 会得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28361512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com