Remove object from array

Asked

Viewed 117 times

1

I have the following array called listDeTipoAtendimento

0: {tipoAtendimento: "ESTUDANTE", tipoServico: "ESTUDANTE", atendente: "José da Silva"}
1: {tipoAtendimento: "Gestante", tipoServico: "teste Bilhetagem", atendente: "Juliana de Olivieira"}
2: {tipoAtendimento: "Idoso", tipoServico: "Recadastramento", atendente: "Supervisor de Posto 65"}
3: {tipoAtendimento: "Idoso", tipoServico: "Recadastramento", atendente: "Atendente Posto  Teste MBA"}
4: {tipoAtendimento: "Idoso", tipoServico: "Emissão da Segunda Via", atendente: "Atendente Posto  Teste MBA"}
5: {tipoAtendimento: "Idoso", tipoServico: "Recadastramento", atendente: "Atendente Posto  17012019"}
6: {tipoAtendimento: "Comum", tipoServico: "Comum 11012019", atendente: "Atendente Posto  Teste MBA"}
7: {tipoAtendimento: "012", tipoServico: "teste de serviço ", atendente: "Atendente Posto  Teste MBA"}
8: {tipoAtendimento: "ESTUDANTE", tipoServico: "ESTUDANTE", atendente: "Atendente Posto  Teste MBA"}
9: {tipoAtendimento: "Idoso", tipoServico: "Recadastramento", atendente: "Atendente Posto 16082018"}

And I treat him like this:

$scope.listDeTipoAtendimentoObject = $scope.listDeTipoAtendimento.map(x => { return { deTipoAtendimento: x.tipoAtendimento, atendente: x.atendente } });

$scope.listDeTipoAtendimentoObject.forEach(item => {
			item.deServico = $scope.listDeTipoAtendimento
					.filter(x => x.tipoAtendimento == item.deTipoAtendimento && x.atendente == item.atendente)
					.map(x => x.tipoServico);
			item.deServico = $scope.removeDuplicates(item.deServico);
});

//função que remove as duplicatas

$scope.removeDuplicates = function (arr) {
	let s = new Set(arr);
	let it = s.values();
	return Array.from(it);
}

and the array now stay that way:

0: {deTipoAtendimento: "ESTUDANTE", atendente: "José da Silva", deServico: Array(1), $$hashKey: "object:2883"}
1: {deTipoAtendimento: "Gestante", atendente: "Juliana de Olivieira", deServico: Array(1), $$hashKey: "object:2884"}
2: {deTipoAtendimento: "Idoso", atendente: "Supervisor de Posto 65", deServico: Array(1), $$hashKey: "object:2885"}
3: {deTipoAtendimento: "Idoso", atendente: "Atendente Posto  Teste MBA", deServico: Array(2), $$hashKey: "object:2886"}
4: {deTipoAtendimento: "Idoso", atendente: "Atendente Posto  Teste MBA", deServico: Array(2), $$hashKey: "object:2887"}
5: {deTipoAtendimento: "Idoso", atendente: "Atendente Posto  17012019", deServico: Array(1), $$hashKey: "object:2888"}
6: {deTipoAtendimento: "Comum", atendente: "Atendente Posto  Teste MBA", deServico: Array(1), $$hashKey: "object:2889"}
7: {deTipoAtendimento: "012", atendente: "Atendente Posto  Teste MBA", deServico: Array(1), $$hashKey: "object:2890"}
8: {deTipoAtendimento: "ESTUDANTE", atendente: "Atendente Posto  Teste MBA", deServico: Array(1), $$hashKey: "object:2891"}
9: {deTipoAtendimento: "Idoso", atendente: "Atendente Posto 16082018", deServico: Array(1), $$hashKey: "object:2892"}

My problem is that the second array, keeps both the element of index 3 as to that of index 4 but I need when I do this junction of the deServico one of these objects is removed, but I’m not able to do.

  • From what I understand, you want to eventually remove item within the loop that processes the items, right? This can "break the loop"...

  • @Leonardoalved in real the second array is already with the processed items, in the example the attendant has in the field ofServico another array with two objects, because he already made the junction when use filter and map then they are already treated, I have a function that removes duplicates removeDuplicates but it’s not working

1 answer

2


I found the answer inside the stackoverflow Remove Duplicates in an Object array Javascript

I set little thing for my purpose, follows the line of code that worked for me

$scope.listDeTipoAtendimentoObject.forEach(item => {
  item.deServico = $scope.listDeTipoAtendimento
  .filter(x => x.tipoAtendimento == item.deTipoAtendimento && x.atendente == item.atendente)
  .map(x => x.tipoServico);
});

// Remove os itens repitidos
var uniq = new Set($scope.listDeTipoAtendimentoObject.map(e => JSON.stringify(e)));
var res = Array.from(uniq).map(e => JSON.parse(e));

$scope.listDeTipoAtendimentoObject = res

Browser other questions tagged

You are not signed in. Login or sign up in order to post.