Найти количество одинаковых пар в массиве 
		
		
		
		Помогите пожалуйста поправить в коде так, чтобы всё отработало. Вот мой код: 
	
function numberOfPairs(gloves) {
    let count = 0;
    for (let i = 0; i < gloves.length; i++) {
        for (let j = 0; j < i; j++) {
            if ((gloves[i] == gloves[j])) {
                count++;
            }
        }
    }
    return count;
}
console.log(numberOfPairs(["red", "green", "red", "blue", "blue"])); // 2
console.log(numberOfPairs(["gray", "green", "red", "blue", "yellow"])); // 0
console.log(numberOfPairs(["gray", "green", "red", "green", "yellow"])); // 1
console.log(numberOfPairs(["red", "red", "yellow"])); // 1
console.log(numberOfPairs(["red", "red", "red", "red", "red", "red"])); // 3
Если все элементы одинаковы, то у меня выводит число 15 в последнем вызове тут console.log(numberOfPairs(["red", "red", "red", "red", "red", "red"])); - должно быть 3.  | 
	
		
 NovichokJS, 
	что такое пара?  | 
	
		
 NovichokJS, 
	
function numberOfPairs(gloves) {
    const obj = {};
    let count = 0;
    for (let el of gloves) {
       obj[el] = (obj[el]||0)+1;
       obj[el] %= 2;
       obj[el] || count++;
    }
    return count;
}
console.log(numberOfPairs(["red", "green", "red", "blue", "blue"])); // 2
console.log(numberOfPairs(["gray", "green", "red", "blue", "yellow"])); // 0
console.log(numberOfPairs(["gray", "green", "red", "green", "yellow"])); // 1
console.log(numberOfPairs(["red", "red", "yellow"])); // 1
console.log(numberOfPairs(["red", "red", "red", "red", "red", "red"])); // 3
 | 
	
		
 Цитата: 
	
 у нас 3 одинаковых пары, поэтому должно вернуть количество равное 3.  | 
	
		
 
function numberOfPairs(gloves) {
    let tmp = {};
    for (let item of gloves) tmp[item] = ++tmp[item] || 1;
    return Object.values(tmp).reduce((a, v) => a + Math.floor(v / 2), 0);
}
:dance:  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 obj[el] = (obj[el]||0)+1; если название(el) встретилось добавляем единицу в счётчик названия(obj[el]) obj[el] %= 2; obj[el] || count++; если счётчик названия делится на два, увеличиваем общий счётчик. почти тоже что if(obj[el] %= 2 == 0) count++;  | 
	
		
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 Можно как-то по-другому это написать? возможно с if  | 
	
		
 я кажется понял. Эта фраза obj[el] = (obj[el]||0)+1; тоже саме что и эта: 
	if (obj[el] !== undefined) { obj[el] += 1 } else { obj[el] = 1 }  | 
	
		
 Цитата: 
	
  | 
	
		
 При такой постановке задачи 
	Найти количество одинаковых пар в массиве Это не решение. Для примеров годится, а при общей постановке - нет. Ничего не сказано, что элементы массива одного типа, только строки или только числа Но можно использовать Map для хранения промежуточных результатов вместо объекта.  | 
	
		
 
function numberOfPairs(gloves) {
    let tmp = {}, count = 0;
    for (let item of gloves) {
        tmp[item] = ++tmp[item] || 1;
        count += 1 - tmp[item] % 2;
    }
    return count;
}
еше вариант в один проход разберетесь с приоритетами операций  | 
| Часовой пояс GMT +3, время: 13:52. |