将jquery函数转换为函数编程函数

时间:2019-05-18 08:55:44

标签: javascript ramda.js

我是函数式编程的初学者, 我想用功能编程范例来转换这个jquery函数。

我尝试转换此功能

merge: function( first, second ) {
            var len = +second.length,
                j = 0,
                i = first.length;

            for ( ; j < len; j++ ) {
                first[ i++ ] = second[ j ];
            }

            first.length = i;

            return first;
        }

这只是一个简单的合并功能。
例如,当我致电

merge([0,1,2,3,4],[5,6,7,8,9]);

它产生

[0,1,2,3,4,5,6,7,8,9]

我所做的是

merge: function( first, second ){
    var len = +second.length,
                j = 0,
                i = first.length;
    let modify = x =>{
    let merging =
        j => {
        first[ i++ ] = second[ j ];
        };
    R.map(merging, R.range(0,len))
    return first;
    }
    modify
}

但是它不起作用。
我知道我的代码出了点问题,但我无法猜测它在哪里...

2 个答案:

答案 0 :(得分:0)

函数式编程禁止突变(例如,任何obj[prop] =分配都是突变)。如果要使此功能更容易(且容易实现),只需concat将第一个数组与第二个数组一起>

console.log(merge([0,1,2,3,4],[5,6,7,8,9]));

function merge(first, second){
  return first.concat(second);
}

答案 1 :(得分:0)

您还可以简单地将它们与ES6一起destructure插入新的容器:

console.log([...[0,1,2,3,4], ...[5,6,7,8,9]])

// OR if you really want a pure function

let mergeArrays = (a,b) => [...a, ...b]

console.log(mergeArrays([0,1,2,3,4], [5,6,7,8,9]))