我是函数式编程的初学者, 我想用功能编程范例来转换这个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
}
但是它不起作用。
我知道我的代码出了点问题,但我无法猜测它在哪里...
答案 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]))