@Asalender

Нужно найти одинаковые числа в массиве?

Есть два массива:

let km = [25, 45, 95, 125, 150, 200, 325, 250, 165, 350]

let cof = [1, 1.5, 1, 1.5, 1.2, 1.5, 1 , 0.5, 1.2, 1.5];


Мне нужно найти одинаковые числа в массиве (cof) и сложить числа другого массива(km) в зависимости какой индекс у одинаковых чисел был в (cof). Например:
В этом варианте правильный ответ 445 (25 + 95 + 325 ), 720(45 + 125 + 200 + 350), 315(150+165)
так как в массиве одинаковые числа стоят на индексах 0, 2, 6 и 1, 3, 5, 9 и 4, 8.

Мой код выглядит так:
let km = [25, 45, 95, 125, 150, 200, 325, 250, 165, 350]

let cof = [1, 1.5, 1, 1.5, 1.2, 1.5, 1 , 0.5, 1.2, 1.5];

let itog = [];


	for (let i = 0; i < cof.length; i++) {
		
		for(let k = i + 1; k < cof.length; k++){
			
			if(cof[i] === cof[k]){

				itog[i] = km[i] + km[k];

				
			}

		}
		
	}
	console.log(itog)


Но он записывает только сумму двух одинаковых чисел, как сделать по другому не могу понять.
  • Вопрос задан
  • 432 просмотра
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
const km = [25, 45,  95, 125, 150, 200, 325, 250, 165, 350]

const cof = [1, 1.5, 1,  1.5, 1.2, 1.5, 1 ,  0.5, 1.2, 1.5];

// как то так
const res = cof.reduce((a,v,i)=>(a[v]=(a[v]||0)+km[i],a),{});

console.log(res); // { 1: 445, "1.5": 720, "1.2": 315, "0.5": 250 }

console.log(Object.values(res)); // [445, 720, 315, 250];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы