我尝试在我的化简器中进行条件连接,我有一个数组对象,并且仅当我的化简器中不存在值时才想连接。
如果值(value)存在,就什么都不会发生。
我使用 lodash 并尝试使用 _.uniqBy
像这样:
_.uniqBy(arr1.concat(val1), 'id');
这不起作用。
我的 reducer 示例
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)
所需输出:
[{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>
关于javascript - 使用 lodash 在 reducer 中进行条件连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48318275/