javascript - 以函数式编程风格存储值

标签 javascript functional-programming

我有一个文件读取流,为我提供了需要在需要返回值的函数中累积的值。

伪代码:

data = [];

process(item){
 data.push(item);
 data.length > 2 && data.shift();
 if data[0] == 'ok'.. 
   return data[1];
 else 
   return something else
}

stream(item){
 process(item);
}

现在这将充满副作用和糟糕的做法。 我根本不知道如何将其翻译成 FP...

仅供练习。请。

最佳答案

避免突变,而是返回新状态。 仅基于输入生成输出,而不基于全局/封闭对象(或至少不基于可变封闭对象)。

您的示例可能的 FP-ish 实现:

function process(item, oldData) {

 const data = [...oldData];
 data.push(item);
 data.length > 2 && data.shift();
 if(data[0] == 'ok') {
   return {
        result: data[1],
      interimData: data
   };
 }
 else {
    return {
       result: return something else,
      interimData: data
   };
 }
}

function stream(item, data){
 return process(item, data);
}

var data = [];
data = stream(item1 , data).interimData;
data = stream(item2 , data).interimData;
...
const finalResult = stream(item3 , data);

关于javascript - 以函数式编程风格存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55749295/

相关文章:

javascript - 无法对未安装的组件主题提供程序执行 React 状态更新

javascript - 在 CSS 列中围绕固定 float 图像使用 JavaScript 增加字体大小

javascript - 每次以不同的入口点运行 Webpack,但仍然使用配置文件?

dictionary - 如何在 clojure 中获取映射的嵌套键?

python - 有什么方法可以延迟计算 function.func_name 吗?

javascript - 是否可以将 localStorage JSON 文件存储或导出到磁盘?

functional-programming - 找到矩阵中的主对角线 - 方案

scala - 在函数式编程术语中,您将 orElse 或其他回退方法称为什么?

c# - 静态方法签名类型参数和部分应用

javascript - jQuery - 检查文本框中的特定单词是否已被删除并更改元素的类