从使用lodash创建的对象数组中获取uniq值



我是react的新手,在这里我试图从新创建的对象数组中获取唯一元素。

const data = _.uniq(
orderData?.Sessions.map(session => ({
label: `${session.Activity.Name}`,
value: `${session.Activity.Name}`
}))
);

我已经尝试过了,但它仍然会使用这两个键中的任何一个返回对象的数组,该数组具有唯一元素。

一个对象不应该被复制。

有人能帮我吗?

应该是_.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>

您必须使用_.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'
); 

如果您获得更多详细信息,请链接

最新更新