我是反应新手,在这里,我试图从新创建的对象数组中获取唯一元素。
const data = _.uniq(
orderData?.Sessions.map(session => ({
label: `${session.Activity.Name}`,
value: `${session.Activity.Name}`
}))
);
我已经尝试过了,但是仍然使用两个键中的任何一个返回具有唯一元素的对象数组。
不应复制对象。
有人可以帮我吗?
答案 0 :(得分:2)
应为_.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>
答案 1 :(得分:0)
您必须使用_.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