我尝试有条件地在我的reducer中进行连接,我有一个数组对象,并且仅当我的reducer中不存在值时才想连接。
如果价值存在,那么什么都不会发生。
我使用lodash并尝试使用_.uniqBy
像这样:
_.uniqBy(arr1.concat(val1), 'id');
这是行不通的。
我的减速机的例子
const arr1 = [{id:1, name:'alex'}, {id:2, name:'taylor'}]
const val1 = {id:1, name:'alex'};
const reducer = {
finalArr: arr1.concat(val1)
}
console.log('Reducer', reducer)
jsFiddle linkk
所需输出:
[{id:1, name:'alex'}, {id:2, name:'taylor'}]
因为val1({id:1,name:'alex'})已存在于数组中。
最佳答案
连接数组,并使用_.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>
但是,最好使用
_.unionBy()
从所有给定数组中依次创建一个唯一值数组: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);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>