@ElRom

Поиск одинаковых элементов в массиве при разных типах данных?

В процессе работы у меня создаются два массива:

Первый создаётся генератором чисел и каждое число в массиве является численным типом данных.
Второй массив создаётся путём добавления значений из всех элементов с определённым классом. И значения в этом массиве являются строковым типом данных.

Образно, код выглядит следующим образом:
<form class="parameters__button" id="parameters__generator__form" action="common.js" method="get">
			<input form="parameters__generator__form" type="button" value="Сгенерировать">
		</form>	

		<div class="parameters__result">
			<output name="result" class="parameters__result__number">0</output>
		</div>
    <div>1</div>
    <div class="selected">2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div class="selected">7</div>
    <div>8</div>
    <div>9</div>
    <div>10</div>
    <div>11</div>
    <div>12</div>
    <div class="selected">13</div>
    <div>14</div>
    <div class="selected">15</div>
    <div class="selected">16</div>
    <div>17</div>
    
    <button class="test">test</button>


.parameters__result {
  border: 1px solid blue;
  margin: 20px;
  width: 40%;
}

.selected {
  color: red;
  font-size: 20px;
}


var rand_numbers = [];

	function randomInteger() {

        var result = Math.floor(1 + Math.random() * 17);
	        if (rand_numbers.indexOf(result) == -1) {
	            rand_numbers.push(result);
	            return result;
	        }
	}

	$(".parameters__button").click(function() {
		rand_numbers.length = 0;
		var i =0;
		while(i < 10) {
			randomInteger();
			i++;
			continue
		}
		rand_numbers.length = 5;
		$(".parameters__result__number").text(rand_numbers.join(" "));
	});
  
$(".test").click(function() {
	var array1 = [];
	array1 = rand_numbers;
  
 	var lengthArr2 = $(".selected").length ;
  	for(var m = 0; lengthArr2  > 0; m++) {
                var valueArr2 = $(".selected").eq(m).text();  
		alert( array1.indexOf( valueArr2 ) );
        	lengthArr2--;
	}
})  ;


На протяжении всего цикла выдаёт -1, потому что значения второго массива являются строчными. А при indexOf идёт строгое равенство === и сравнить строчные с численными нельзя. Как в такой ситуации сравнить два массива и найти совпадения?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
valueArr2 = valueArr2 - 0; //Приводим к числу
Или:
valueArr2 = parseInt(valueArr2); //Приводим к числу

Или:
var result = Math.floor(1 + Math.random() * 17) + ""; //Приводим к строке
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы