Emi*_*Emi 5 javascript ramda.js
是否有内置 Ramda 函数来检索以字符串形式给出路径的值?喜欢:
R.path('a.b', {a: {b: 2}}); // I want to get 2
Run Code Online (Sandbox Code Playgroud)
我知道这可以path通过使用数组来实现,例如:
R.path(['a', 'b'], {a: {b: 2}});
Run Code Online (Sandbox Code Playgroud)
我可以分割路径.然后使用它,但在这样做之前我想知道是否有一个可用的函数可以像lodash.get一样工作。
Ramda 不像 lodash 那样处理字符串路径。R.pipe但是,您可以使用, 和生成非常接近的函数R.split。split 用于将带有点 ( ) 和括号的数组转换.为可以处理的数组R.path。
注意:这是一个非常幼稚的实现,由于JS 中有效的对象键是什么,它会在各种边缘情况下失败。例如,像这样的边缘情况-从如下所示的对象['a.b']获取属性。为了处理边缘情况,你必须实现类似于 lodash 内部函数的东西。a.b{ 'a.b': 5 }stringToPath()
const { pipe, path, split } = R;
const pathString = pipe(split(/[[\].]/), path);
const result = pathString('a.b')({a: {b: 2}});
console.log(result);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>Run Code Online (Sandbox Code Playgroud)