I'm trying to remove duplicated objects if the ids are the same with lodash
_.uniqBy
.
Or this doesn't have to be a lodash
or _.uniqBy
, but is this possible?
Also the id value is always dynamic, so this time I want to remove the object with id:123
, but other time it will be different id
import _ from "lodash";
export default function App() {
const samples = [
{ id: 123, name: "Dan", age: 10 },
{ id: 234, name: "Jake", age: 22 },
{ id: 123, name: "Jake", age: 9 }
];
let uniq = _.uniqBy(samples, samples.name);
console.log(uniq);
return (
<div className="App">
{uniq.map((u) => (
<p>{u.id}</p>
))}
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
Or you can take a look at sample code here
CodePudding user response:
You just need to provide the property name which is name
in your case. See _.uniqBy()
docs.
const samples = [{
id: 123,
name: "Dan",
age: 10
},
{
id: 234,
name: "Jake",
age: 22
},
{
id: 123,
name: "Jake",
age: 9
}
];
const unique = _.uniqBy(samples, 'name');
console.log(unique);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG ljU96qKRCWh quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
Edit
As the question was edited: If you want to have it unique for id
you should pass "id"
instead of "name"
.