【问题标题】:Get uniq values from an array of object created using lodash从使用 lodash 创建的对象数组中获取唯一值
【发布时间】:2020-07-13 06:43:32
【问题描述】:
我是反应新手,在这里我试图从新创建的对象数组中获取唯一元素。
const data = _.uniq(
orderData?.Sessions.map(session => ({
label: `${session.Activity.Name}`,
value: `${session.Activity.Name}`
}))
);
我已经尝试过了,但它仍然使用两个键中的任何一个返回具有唯一元素的对象数组。
一个对象不应该被复制。
谁能帮我解决这个问题?
【问题讨论】:
标签:
javascript
reactjs
lodash
【解决方案1】:
应该是_.uniqBy(),参考uniqBy
const data = _.uniqBy(
orderData ? .Sessions.map(session => ({
label: `${session.Activity.Name}`,
value: `${session.Activity.Name}`
})), 'label' or 'value'
);
应该是按标签或按值
示例
document.querySelector("body").onload = function() {
// By 'label'
console.log("By label");
console.log(
_.uniqBy(
[
{'label' : 'name', 'value' : 'Test Name 1'},
{'label' : 'name', 'value' : 'Test Name 2'},
{'label' : 'company', 'value' : 'Test Company 1'}
], 'label'
)
)
// By 'vlaue'
console.log("By value");
console.log(
_.uniqBy(
[
{'label' : 'name', 'value' : 'SO User'},
{'label' : 'name', 'value' : 'SO User'},
{'label' : 'company', 'value' : 'Test Company 1'}
], 'value'
)
)
}
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
【解决方案2】:
你必须使用_.uniqBy(data, 'id');//id that is key you have to remove duplicate value from array
你的场景会这样使用
如果被标签移除,那么
const data = _.uniqBy(
orderData ? .Sessions.map(session => ({
label: `${session.Activity.Name}`,
value: `${session.Activity.Name}`
})),'label'
);
如果被一个值移除,那么
const data = _.uniqBy(
orderData ? .Sessions.map(session => ({
label: `${session.Activity.Name}`,
value: `${session.Activity.Name}`
})),'value'
);
如果您获得更多详细信息,那么Link