gpt4 book ai didi

javascript - 如何在 immutable.js 中将 map 列表转换为 map map ?

转载 作者:行者123 更新时间:2023-12-03 02:20:48 25 4
gpt4 key购买 nike

假设我有一个像这样的 immutable.js List:

var xs = Immutable.fromJS([{key: "k", text: "foo"}])

我想将其转换为如下所示的 map :

var ys = Immutable.fromJS({k: {key: "k", text: "foo"}})

如何在 immutable.js 中将 xs 转换为 ys

按惯用方式,我的意思是任何中间结构都应该是 immutable.js 结构,并且我认为任何中间步骤都将使用 iterable composition而不是创建全尺寸的中间表示。

编辑:我创建了一个 jsperf benchmark比较迄今为止提供的答案。这两种非变异解决方案对我来说都相当惯用;我可能会坚持下去,让投票决定所选择的答案,或者坚持下去,直到我们可以收集一组大致相同的惯用技术。

最佳答案

您可以将输入列表减少到新的 Immutable.Map 中:

var ys = xs.reduce(
function(result, item) { return result.set(item.get('key'), item); },
Immutable.Map());

在这种情况下没有中间表示,但不可变映射必须在每次迭代中更新(事实上,必须创建新实例),这可能不是最优的(取决于 Immutable.Map 的实际实现) .

您可以优化它,将其简化为常规 JavaScript 对象,最后将其转换为不可变映射:

var ys = Immutable.Map(xs.reduce(
function(result, item) { result[item.get('key')] = item; return result; },
{}));

但这肯定不太惯用。

关于javascript - 如何在 immutable.js 中将 map 列表转换为 map map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573728/

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