#javascript
#javascript
Вопрос:
Я хочу найти первое одинаковое число в одном и том же индексе в разных циклах for и напечатать «Да», если число совпадает, и «Нет», если число не совпадает.
const x1 = 2;
const v1 = 1;
// 2 1 = 3
const x2 = 1;
const v2 = 2;
// 1 2 = 3
// Complete the kangaroo function below.
function kangaroo(x1, v1, x2, v2) {
let jump1 = 0;
let jump2 = 0;
let jumps1 = 0;
let jumps2 = 0;
for(let i = x1; i <= 10; i = v1) {
jumps1 = jump1 i;
console.log(jumps1)
}
console.log('---------------------> Hold on <--------------')
for(let i = x2; i <= 10; i = v2) {
jumps2 = jump2 i;
console.log(jumps2)
}
if(jumps1 === jumps2) {
console.log('Yes');
} else {
console.log('No');
}
};
kangaroo(x1, v1, x2, v2);
Комментарии:
1. есть ли у вас более подробная информация по этому вопросу, которой вы могли бы поделиться?
2. Циклы выполняются последовательно, так когда же вы ожидаете, что они будут равны?
3. как вы можете видеть в консоли, номер 3 находится в той же позиции индекса и с тем же номером 3. Когда это произойдет, я хочу выдать строку с ‘Yes’ и остановить последовательность, если нет, я хочу выдать ‘Not’
Ответ №1:
Добавьте эти переменные перед циклами:
const loop1Numbers = {};
const loop2Numbers = {};
Добавьте это в свой первый цикл:
loop1Numbers[i] = jumps1;
Добавьте это в свой второй цикл:
loop2Numbers[i] = jumps2;
И, наконец, после циклов вы можете проверить, «ДА» или «НЕТ».:
let isThereAnyNumberEqualInSameIndex = false;
Object.keys(loop1Numbers).forEach(key => {
if (loop1Numbers[key] === loop2Numbers[key]) isThereAnyNumberEqualInSameIndex = true
});
После этого — содержит true
ли thereanynumberequalinsameindex или false
как вам нужно
Ответ №2:
Я нашел это лучшее решение в Интернете, которое, на мой взгляд, более простое. Спасибо! Вот ссылка, если вы хотите это проверить https://bmizepatterson.com/2018/10/01/the-kangaroo-problem /
function kangaroo(x1, v1, x2, v2) {
if (v1 < v2 || (x2 - x1) % (v1 - v2) !== 0) {
return 'NO';
} else {
return 'YES';
}
};
console.log(kangaroo(x1, v1, x2, v2));