如何将数组中的元素追加到另一个数组?

时间:2016-12-21 06:09:56

标签: immutability ramda.js

如何使用带有单行语句的Ramdajs将数组中的元素追加到另一个数组?

state = {
   items:[10,11,]
 };

newItems = [1,2,3,4];

state = {
  ...state,
  taggable_friends: R.append(action.payload, state.taggable_friends)
}; 

//now state is [10,11,[1,2,3,4]], but I want [10,11,1,2,3,4]

2 个答案:

答案 0 :(得分:5)

Ramda的append通过将第一个参数“推”到第二个参数的克隆中来工作,该副本应该是一个数组:

R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests']
R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']]

在你的情况下:

R.append([1,2,3,4], [10,11]); // => [10,11,[1,2,3,4]]

而是使用RamdaJS的concat,并反转参数的顺序:

R.concat(state.taggable_friends, action.payload)

答案 1 :(得分:2)

如果您只想使用基本的JavaScript,您可以这样做:

[self addTarget:self action:@selector(onClick:forEvent:) forControlEvents:UIControlEventTouchUpInside];