Получить все неуникальные значения (т.е. дубликаты / более одного вхождения) в массиве
Мне нужно проверить массив JavaScript, чтобы увидеть, есть ли какие-либо дубликаты значений. Какой самый простой способ сделать это? Мне просто нужно найти дублирующиеся значения - мне не нужны их индексы или сколько раз они дублируются.
Я знаю, что могу пройтись по массиву и проверить все другие значения на совпадение, но, похоже, должен быть более простой способ. Есть идеи? Спасибо!
Подобный вопрос:
99 ответов
var a= [1, 2,2,3,3,4,4,4];
var m=[];
var n = [];
a.forEach(function(e) {
if(m.indexOf(e)=== -1) {
m.push(e);
}else if(n.indexOf(e)=== -1){
n.push(e);
}
});
Вы можете продолжить, сравнив индекс:
function getDuplicate(array) {
return array.filter((value, index) => array.value !== index)
}
var arr = ['a','b','c','a'];
arr.filter( (item , index ) => {
console.log(item , index , arr.indexOf(item) , arr.indexOf( item ) == index);
return index == arr.indexOf(item)
} );
var array = ['a', 'b', 'c', 'a'];
function unique(array) {
var unique_arr = [];
array.forEach(function(i, e) {
if (unique_arr.indexOf(i)===-1) unique_arr.push(i);
});
return unique_arr;
}
console.log(unique(array));
var arr = [4,5,1,1,2,3,4,4,7,5,2,6,10,9];
var sorted_arr = arr.sort();
var len = arr.length;
var results = [];
for (var i = 0; i < len; i++) {
if (sorted_arr[i + 1] !== sorted_arr[i]) {
results.push(sorted_arr[i]);
}
}
document.write(results);
Меня спросили об этом в интервью. Мой ответ:
List<int> getDublicates(List<int> x)
{
List<int> result = new List<int>();
while (x.Count>0)
{
int d = x[0];
x.Remove(x[0]);
if (x.Contains(d))
result.Add(d);
}
return result;
}
у него хорошая производительность
Если вы хотите легко получить уникальное значение из массива, используя чистый javascript(который также работает с более старой версией браузера ecmascript5), взгляните на приведенный ниже код.
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
var result = [];
// If you do sorting or not this will result unique array value
arr.forEach(function(currentValue) {
//Check weather current value exist or not based on that push in new array
if (result.indexOf(currentValue) === -1) {
result.push(currentValue);
}
});
console.log(result);
Используя ES6(которая поддерживается в современном новейшем браузере) это можно сделать одной строкой
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
console.log(Array.from(new Set(arr)))
В этом посте было полезно проверить дубликаты, если вы используете Jquery.
Как найти дубликаты в массиве с помощью jquery
var unique_values = {}; var list_of_values = []; $('input[name$="recordset"]'). each(function(item) { if ( ! unique_values[item.value] ) { unique_values[item.value] = true; list_of_values.push(item.value); } else { // We have duplicate values! } });
//program to find the duplicate elements in arraylist
import java.util.ArrayList;
import java.util.Scanner;
public class DistinctEle
{
public static void main(String args[])
{
System.out.println("Enter elements");
ArrayList<Integer> abc=new ArrayList<Integer>();
ArrayList<Integer> ab=new ArrayList<Integer>();
Scanner a=new Scanner(System.in);
int b;
for(int i=0;i<=10;i++)
{
b=a.nextInt();
if(!abc.contains(b))
{
abc.add(b);
}
else
{
System.out.println("duplicate elements"+b);
}
}
}
}