Javascript поиск дубликатов с исключением
У меня имеются след. переменные :
var a2 = 3;
var b2 = 10;
var c2 = 3;
var d2 = 3;
var e2 = 10;
var wild =10;
Задача пройтись по порядку от a2 до e2 в поиске дубликатов , и вызывать функцию console.log(); при совпадении каждой комбинаций (a2,b2,c3) , (a2,b2,c3,d2) , (a2,b2,c3,d2,e2) проверку должны пройти комбинации с одинаковыми значениями от начала до конца:
true, если значение по прядку совпадают :
если :
a2=0,b2=0,c2=0
вызвать функцию 1
если :
a2=0,b2=0,c2=0,d2=0
вызвать функцию 2
если :
a2=0,b2=0,c2=0,d2=0,e2=0
вызвать функцию 3
false , если значение одного из элементов отличается от ряда дубликатов .
например :
a2=1,b2=0,c2=0
a2=0,b2=1,c2=0,d2=0
a2=0,b2=0,c2=1,d2=0,e2=0
Но главная задача является добавить исключение , а именно переменную wild которая = 10.
например такой ряд комбинации считается true:
a2=10,b2=0,c2=0
a2=0,b2=10,c2=0,d2=0
a2=0,b2=0,c2=10,d2=0,e2=0
Без данного исключения (wild) поиск и сравнение можно было бы реализовать данным образом
//Проверка дубликатов
if(a2==b2){
console.log("a2==b2");
if(b2==c2){
console.log("b2==c2");
if(c2==d2){
console.log("c2==d2");
if(d2==e2){
console.log("d2==e2");
}
}
}
}
Подскажите как в данную конфигурацию добавить wild как исключение.
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Так подходит?
function test(wild, a2, b2, c2, d2, e2) {
var firstNotWild = [a2, b2, c2, d2, e2].find(num => num !== wild);
var valid = new Set([wild, firstNotWild ?? wild]);
if(valid.has(a2) && valid.has(b2)) {
console.log("a2==b2");
if(valid.has(c2)) {
console.log("b2==c2");
if(valid.has(d2)) {
console.log("c2==d2");
if(valid.has(e2)) {
console.log("d2==e2");
console.log("All match.");
}
}
}
}
}
test(10, 3, 3, 3, 3, 3)
test(10, 3, 10, 3, 3, 10)
test(10, 10, 10, 10, 10, 10)
test(10, 3, 10, 3, 0, 10)
Вариант 2:
test(10, { a1: 3, b1: 3, c1: 3, d1: 3, e1: 3 });
test(10, { a2: 3, b2: 10, c2: 3, d2: 3, e2: 10 });
test(10, { a3: 10, b3: 10, c3: 10, d3: 10, e3: 10 });
test(10, { a4: 3, b4: 10, c4: 3, d4: 0, e4: 10 });
// Функцию также легко вызывать с переменными:
const a5 = 3;
const b5 = 10;
const c5 = 3;
const d5 = 3;
const e5 = 10;
test(10, { a5, b5, c5, d5, e5 });
function test(wild, numbers) {
console.log(JSON.stringify(numbers));
const keys = Object.keys(numbers);
const values = Object.values(numbers);
const firstNotWild = values.find(num => num !== wild);
const valid = new Set([wild, firstNotWild ?? wild]);
for (let i = 0; i < values.length - 1; i++) {
if (valid.has(values[i]) && valid.has(values[i + 1])) {
console.log(`${keys[i]}==${keys[i + 1]}`);
} else {
break;
}
}
}