使用lodash在reducer中有条件地连接

时间:2018-01-18 09:51:11

标签: javascript reactjs lodash

我尝试在我的reducer中有条件地连接,我有一个数组对象,我想只有在我的reducer中不存在值时才连接。 如果存在价值,则不会发生任 我使用lodash,我尝试使用_.uniqBy这样:

_.uniqBy(arr1.concat(val1), 'id');

这不起作用......

Example of my reducer

必需的输出:

[{id:1, name:'alex'}, {id:2, name:'taylor'}]

因为数组中已存在val1({id:1,name:'alex'}}。

2 个答案:

答案 0 :(得分:1)

我已经尝试过,你做了什么,它工作得很好。

你也可以试试这个,

.uniqBy( .concat(arr1,val1),'id')

答案 1 :(得分:1)

连接数组,并使用_.uniqBy()删除重复项工作正常。

示例:



const arr1 = [{id:1, name:'alex'}, {id:2, name:'taylor'}]
const val1 = {id:1, name:'alex'};

const result = _.uniqBy(arr1.concat(val1), 'id');

console.log('Reducer', result);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
&#13;
&#13;

但是,最好使用_.unionBy()按顺序从所有给定的数组创建一个唯一值数组:

&#13;
&#13;
const arr1 = [{id:1, name:'alex'}, {id:2, name:'taylor'}]
const val1 = {id:1, name:'alex'};

const result = _.unionBy(arr1, val1, 'id');

console.log('Reducer', result);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
&#13;
&#13;