Найдите первое одинаковое число в одном и том же индексе в разных циклах for

#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));