繁体   English   中英

如何在 vanilla JS 中重写名为“pathSatisfies”的 FP 库 Ramda.js function

[英]How to rewrite a FP library Ramda.js function called 'pathSatisfies' in vanilla JS

在此处阅读有关 function 的信息

  • 不能使用外部库来执行此操作。
  • 不能使用任何特定于节点的 API,如fsutil等。

参数

pathSatisfies接受 3 个参数。

  1. 谓词 function
  2. 一个包含键名的数组(又名路径)
  • 它将始终包含字符串类型的元素。
  1. 可以满足路径的任何object。

有没有办法在纯 JS 中实现这一点?

只是为了让您了解如何开始思考这个问题:

什么是小事?

  • 当路径为空时 -> 只需调用 object 上的谓词 function

如果路径不为空以更接近平凡的情况,减少步骤是什么?

  • 使用 object[path[0]] 作为新的 object 并使用路径的 rest 作为新路径。

这导致了一个简单的递归 function:

function pathSatisfies(fn, path, obj) {
    if (path.length === 0) {
        return fn(obj);
    }
    return pathSatisfies(fn, path.slice(1), obj[path[0]]);
}

这不会检查任何情况,例如路径不在 object 等中。在不使用.slice()以获得更好的性能的情况下转换为迭代也是微不足道的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM