javascript - 使用 lodash 在 reducer 中进行条件连接

标签 javascript reactjs lodash

我尝试在我的化简器中进行条件连接,我有一个数组对象,并且仅当我的化简器中不存在值时才想连接。 如果值(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)

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>

关于javascript - 使用 lodash 在 reducer 中进行条件连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48318275/

相关文章:

javascript - 为什么当我解构属性时接收 props 的组件不工作,但当我使用 props.key 时它工作?

reactjs - 尝试导入错误: 'Wallet' is not exported from '@project-serum/anchor'

javascript - 从数组中删除 object.property 位于 array2 中的对象

javascript - 通过 jquery 的 wordpress 自定义字段值

javascript - 在 Chrome 扩展中包含托管 js 和 css

reactjs - 使用 axios 在 React 中上传多个图像

javascript - 为动态对象定义编写更清晰的代码

javascript - 将消息数组拆分为对话

javascript - 轨道控制跟随鼠标,无需点击 Three.js

javascript - AngularJS:出现 "[...] is not a function"错误