js determina se há arrays duplicados em um array/se um determinado valor de atributo de um objeto em um array está duplicado

Em projetos, frequentemente encontramos se existe um certo valor semelhante no processamento de array. Ou se existem elementos idênticos no objeto...
Os métodos a seguir são comumente usados, mas não estão limitados a eles.

1. Dados comuns do array
1.1 Classifique o array e compare se o elemento anterior e o próximo elemento são iguais. Se forem iguais, significa que o array possui valores duplicados.

const arr=['111','222','333','444','555'];
//判断数组元素是否有重复
var sarr = arr.sort();
for(let i=0; i<sarr.length; i++){
    if(sarr[i] == sarr[i+1]){
        alert("数组中重复元素是:" + sarr[i])
    }
}

Insira a descrição da imagem aqui
1.2: Primeiro converta o array em uma string e depois percorra o array. Se você ainda conseguir encontrar o elemento após remover o elemento atual do array da string, significa que o array tem valores duplicados.

	const arr=['111','111','333','444','555'];
	var str = arr.join(",") + ",";
	for(let i=0; i<arr.length; i++){
	    if(str.replace(arr[i]+",", "").indexOf(arr[i]+",") > -1){
	        alert("数组中重复元素是:" + arr[i]);
	        break
	    }
	}

Insira a descrição da imagem aqui
1.3 Primeiro use a sintaxe ES6 para desduplicar o array e, em seguida, compare o comprimento com o array original. Se o comprimento for menor que o array original, significa que o array possui valores duplicados.
Array.from(new Set(arr)).length < arr.length

//ES6去重方法
// 1. 拓展运算符 + new Set方法

const arr=['111','222','333','444','555'];
let arr1 = [...new Set(arr)]
if(arr2.length < arr.length) {
	console.log('有重复')
}else{
	console.log('没有重复')
}

Insira a descrição da imagem aqui

	// 2. Array.from + new Set方法
	const arr=['111','111','333','444','555'];
	let arr2 = Array.from(new Set(arr))
	if(arr2.length < arr.length) {
		console.log('有重复')
	}else{
		console.log('没有重复')
	}

Insira a descrição da imagem aqui

2. Matriz de elemento de objeto
Requisito: Determinar se há dados duplicados em nome/idade na matriz abaixo.

2.1. Primeiro use o conjunto de sintaxe ES6 para desduplicar o array e, em seguida, compare o comprimento do array original. Se o comprimento for menor que o array original, significa que o array possui valores duplicados.

	const arr=[
	  {name:"张三3",age:12},
	  {name:"张三2",age:12},
	  {name:"张三",age:12},
	  {name:"张三1",age:12}
	];
	const newListLength=new Set(arr.map(item=>item.name)).size;
	const listLength=arr.length;
	if(listLength>newListLength){
	  console.log("重复");
	}

Insira a descrição da imagem aqui

2.2. Primeiro converta o array em uma string e, em seguida, percorra o array. Se você ainda conseguir encontrar o elemento após remover o elemento atual do array da string, significa que o array tem valores duplicados.

const arr=[
  {name:"张三3",age:12},
  {name:"张三2",age:12},
  {name:"张三",age:12},
  {name:"张三1",age:12}
];
/*
  replace不用正则的话,只会替换掉第一个符合条件的数据
  之所以加逗号,是因为这样可以确保数据的唯一性,如果不加逗号,会导致数据不对,比如说第三条数据"张三",replace之后还会查到第四条数据中的"张三",所以得加上逗号确保唯一性
*/
const newArr=arr.map(item=>item.name);
const str=newArr.join(",")+",";
const flag=newArr.some(item=>{
  return str.replace(item+",","").indexOf(item+",")>-1
});
if(flag){
  console.log("重复");
}

Insira a descrição da imagem aqui
2.3. Verifique se o subscrito encontrado usando findIndex ou indexOf é igual ao subscrito do loop atual.

	//indexOf查找是否有重复的
	const arr=[
	  {name:"张三3",age:12},
	  {name:"张三2",age:12},
	  {name:"张三",age:12},
	  {name:"张三1",age:12}
	];
	const newArr=arr.map(item=>item.name);
	const isRepeat=newArr.some((item,index,arr)=>arr.indexOf(item)!=index);
	if(isRepeat){
	  console.log("重复");
	}

Insira a descrição da imagem aqui

	//findIndex查找是否有重复的
	const arr=[
	  {name:"张三3",age:12},
	  {name:"张三2",age:12},
	  {name:"张三",age:12},
	  {name:"张三1",age:12}
	];
	const newArr=arr.map(item=>item.name);
	const isRepeat=newArr.some((x,index,arr)=>arr.findIndex(y=>y==x)!=index);
	if(isRepeat){
	  console.log("重复");
	}

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/lzfengquan/article/details/128816140
Recomendado
Clasificación