Articles of 函数式编程

下划线组sorting

我有一个关于函数式编程的问题。 我使用underscore.js库。 让我们考虑一些用例。 我有一些重复标签的数组,我需要计算每个标签在数组中的出现次数,并根据出现次数进行sorting。 为了计算,我可以使用countBy多less个标签 _.countBy([1, 2, 3, 4, 5], function(num) { return num % 2 == 0 ? 'even': 'odd'; }); => {odd: 3, even: 2} 但在这里,因为我有一个散列,这对订单没有意义,所以没有sorting。 所以在这里,我需要将散列转换为数组然后对其进行sorting并将其转换为散列。 我很确定有这样一个优雅的方式,但我没有意识到这一点。 我将不胜感激任何帮助。

如何添加字段的JavaScript数组中的每个对象没有循环?

有没有方法来添加一个字段的每个对象的Javascript数组没有循环呢? 就像是 array.each(function (index, object){ object[newField] = anotherArray[index]; });

在javascript中使用callback之后解释输出

我是新来的JavaScript,我想了解callback。 我无法理解20为什么会在10之前打印出来。我的理解是对于一个callback函数,例如func1(parameter,func2()) , func2()是callback函数, func1执行“参数“传给func1 。 我的理解是正确的吗? function timePass(length){ console.log("finished after doing timePass for "+length +" seconds") } timePass(10,timePass(20)); 以下输出: 完成时间通过20秒后完成 完成时间通过10秒后完成

Monadic IO与ramda和ramda幻想

试图找出IO monad是如何工作的。 使用下面的代码,我读取filenames.txt并使用结果来重命名目录testfiles中的文件。 这显然是未完成的,所以而不是实际重命名我login到控制台的任何东西。 🙂 我的问题是: 我打电话runIO两次,但它感觉只是应该只调用一次,到底? 我想使用renameIO而不是renaneDirect但无法find正确的语法。 任何其他build议也表示赞赏,我是新来的FP! var R = require('ramda'); var IO = require('ramda-fantasy').IO var fs = require('fs'); const safeReadDirSync = dir => IO(() => fs.readdirSync(dir)); const safeReadFileSync = file => IO(() => fs.readFileSync(file, 'utf-8')); const renameIO = (file, name) => IO(() => console.log('Renaming file ' + file + ' to ' […]

我可以使用setTimeout创build一个廉价的无限循环?

var recurse = function(steps, data, delay) { if(steps == 0) { console.log(data.length) } else { setTimeout(function(){ recurse(steps – 1, data, delay); }, delay); } }; var myData = "abc"; recurse(8000, myData, 1); 这个代码让我感到困扰的是我传递了一个8000次的string。 这是否会导致任何types的内存问题? 另外,如果我用node.js运行这个代码,它立即打印,这不是我所期望的。

过滤和映射在相同的迭代

我有这种简单的情况,我想筛选和映射到相同的值,如下所示: const files = results.filter(function(r){ return r.file; }) .map(function(r){ return r.file; }); 为了节省代码行数,以及提高性能,我正在寻找: const files = results.filterAndMap(function(r){ return r.file; }); 这是否存在,或者我应该自己写点什么? 我在一些地方想要这样的function,以前从来没有打扰过这个function。

什么是事件循环,与使用其他模型有什么不同?

我一直在研究Node.JS,所有的文档和博客都讨论它如何使用事件循环而不是按请求模式。 我有一些混淆理解差异。 我觉得我有80%的理解,但还没有完全得到它。