javascript - 寻找一个 FP 算法来从点分隔的字符串中组成对象

标签 javascript algorithm functional-programming fold

我正在尝试使用函数式编程解决特定问题。我的猜测是弃牌应该可以完成这项工作,但到目前为止我还没有找到解决方案。

从像 "a.b.c" 这样的点分隔字符串开始,我想构建一个 Javascript 对象,它在 JS 文字符号中看起来像:

obj = {a:{b:{c:"whatever"}}}

该算法应该接受一个种子对象作为开始。在前面的示例中,种子是 {}

如果我提供 {a:{f:"whatever else"}} 作为种子,结果将是

{a:{f:"whatever else",b:{c:"whatever"}}}

希望我的描述足够清楚。我不是在谈论字符串操作。我想创建合适的对象。

我正在使用 Javascript,因为这是出现这个现实世界问题的语言,也是我将在其中实现 FP 解决方案的地方,我希望通过在这里提问找到它。

编辑:我试图解决的主要问题是如何避免可变对象。 JS 在某种程度上对添加/删除属性过于宽松,在这种情况下,我想确保在 FP 例程运行期间不会有副作用。

最佳答案

var seed = {},
    str = "a.b.c";
str.split(".").reduce(function(o, p) {
    return p in o ? o[p] : (o[p] = {});
}, seed);

console.log(seed); // {"a":{"b":{"c":{}}}}

关于javascript - 寻找一个 FP 算法来从点分隔的字符串中组成对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22864748/

相关文章:

javascript - 带有换行符的 React/Momentjs 日期格式

javascript - 延时网络界面

javascript - 动态选择一个javascript对象属性

algorithm - 计算累积 XOR 小于 k 的子集数

Java8 : Using an IntStream as a Supplier parameter for custom Collector

javascript - Ember 扩展组件计算属性?

algorithm - 数据挖掘和基于文本的分析的模式识别

algorithm - 无法弄清楚这种用法的逻辑

functional-programming - Coq 中 Definition 和 Let 的区别

haskell + "Remove a parameter"