У меня есть массив объектов, и я хочу избежать дублирования значения с определенным значением ключа.
Это objectArray.
var dept =
[
{
"department": [
{ "userName": "cds",
"userId": "33",
"userFirstname": "Chef",
"userLastname": "Jone"
},
{
"userName": "asset1",
"userId": "27",
"userFirstname": "Asset",
"userLastname": "Ann "
}
],
"comment": "",
"doc": null
},
{
"department": [
{
"userName": "audit1",
"userId": "32",
"userFirstname": "Audit",
"userLastname": "Kim"
},
{ "userName": "cds",
"userId": "33",
"userFirstname": "Chef",
"userLastname": "Jone"
}
],
"comment": "",
"doc": null
}
];
Я пытался вернуть не дублированный объект с помощьюJavaScript.Но результат кажется другим.Я могу вернуть значение из одного массива объектов.Однако я испытываю трудности с извлечением значений из массива массива.Как назначить фильтр массива из массива?Любая помощь будет оценена.Заранее спасибо.
function getUnique(dept, comp) {
const unique = dept
.map(e => e[comp])
// store the keys of the unique objects
.map((e, i, final) => final.indexOf(e) === i && i)
// eliminate the dead keys & store unique objects
.filter(e => dept[e]).map(e => dept[e]);
return unique;
}
return getUnique(dept,'userName');
Я бы получил результат
[
{
"department": [
{ "userName": "cds",
"userId": "33",
"userFirstname": "Chef",
"userLastname": "Jone"
},
{
"userName": "asset1",
"userId": "27",
"userFirstname": "Asset",
"userLastname": "Ann "
}
],
"comment": "",
"doc": null
},
{
"department": [
{
"userName": "audit1",
"userId": "32",
"userFirstname": "Audit",
"userLastname": "Kim"
}
],
"comment": "",
"doc": null
}
];
Однако я получил результат
[
{
"department": [
{ "userName": "cds",
"userId": "33",
"userFirstname": "Chef",
"userLastname": "Jone"
},
{
"userName": "asset1",
"userId": "27",
"userFirstname": "Asset",
"userLastname": "Ann "
}
],
"comment": "",
"doc": null
}
]