Как найти первое вхождение двузначного числа - PullRequest
0 голосов
/ 05 января 2019

Итак, я помещаю элементы в массив через приглашение до получения 0. После этого я пытаюсь найти первое двузначное число. Например, если массив равен [2,3,55,0], моя программа должна вернуть 55.

function findFirstDouble() {
	var niz = []
	var a = 1;
	for (var i = 1; a != 0; i++) {
		var unos = parseInt(prompt("Enter number :"))
		niz.push(unos)
		a = unos
	}
	alert(niz);
	for (var i = 0; i < niz.length; i++) {
		if (niz[i] / 10 > 0 && niz[i] / 100 == 0) {
			console.log(niz[i]); 
			break;
		}
		else {
			alert("No double digit numbers!")
			break;
		}
	}
}
findFirstDouble();

Ответы [ 4 ]

0 голосов
/ 05 января 2019

Вы используете if (niz[i] / 10 > 0 && niz[i] / 100 == 0) {, чтобы определить, находится ли я между 10 и 99, используя деление.

Но если вы хотите сделать это, эта часть должна быть больше единицы niz[i] / 10 > 0, а эта часть niz[i] / 100 == 0 должна быть меньше единицы.

Это даст вам:

if (niz[i] / 10 >= 1 && niz[i] / 100 < 1) {

function findFirstDouble(val) {
  for (var i = 0; i < val.length; i++) {
    if (val[i] / 10 >= 1 && val[i] / 100 < 1) {
      return val[i];
    }
  }
  return null;
}

const arrays = [
  [1, 2, 55, 13],
  [9, 1000],
  [1, 2]
];

arrays.forEach(s => {
  var res = findFirstDouble(s);
  console.log(res !== null ? res : "No double digit numbers in: " + s);
});

Но проще просто сравнить значения niz[i] против 10 и 100. Вы можете обновить свой код, чтобы функция findFirstDouble могла найти первое двузначное число и выполнить создание значений подсказки, кроме этого чтобы вы могли использовать его снова.

function findFirstDouble(val) {
    for (var i = 0; i < val.length; i++) {
        if (val[i] >= 10 && val[i] < 100) {
            return val[i];
        }
    }
    return null;
}

function findFirstDouble(val) {
  for (var i = 0; i < val.length; i++) {
    if (val[i] >= 10 && val[i] < 100) {
      return val[i];
    }
  }
  return null;
}

const arrays = [
  [1, 2, 55, 13],
  [1, 2]
];

arrays.forEach(s => {
  var res = findFirstDouble(s);
  console.log(res !== null ? res : "No double digit numbers in: " + s);
});
0 голосов
/ 05 января 2019

Пожалуйста, используйте встроенную функцию js find. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

Вот решение

// I assume that you already have an array   
const niz = [2,3,55,0]
const firstDoubleDigit = niz.find(num => num < 100 && num >= 10)
console.log(firstDoubleDigit)
0 голосов
/ 05 января 2019

Вот ответ, который, я думаю, вы ищете.

Я опустил часть заполнения массива.

Зачем вам делать какое-либо деление, если вам просто нужно проверить каждое число, и если первое соответствует критериям, то у вас есть двузначное число, поэтому выйдите из цикла с break или возврат ключевое слово.

var niz = [1, 2, 55, 13];
for (var i = 0; i < niz.length; i++) {
    if (niz[i] > 9 && niz[i] < 100) {
        console.log('Pronadeni broj je:', niz[i]);
        break;
    }
}

Вы также можете преобразовать в строку: if (niz[i].toString().length===2){ // your number }

0 голосов
/ 05 января 2019

Простой способ без математики - просто преобразовать ее в строку.

const data = [2,3,55,0];

const res = data.findIndex(n=>`${n}`.length===2);

console.log(res > -1 ? "Exists at position " + res : "Doesn't exist");

Математически:

const data = [2,111,3,55,0];

const res = data.find(n=>n<100&&n>9);

console.log(res ? "Exists " + res : "Doesn't exist");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...