В процессе работы у меня создаются два массива:
Первый создаётся генератором чисел и каждое число в массиве является
численным типом данных.
Второй массив создаётся путём добавления значений из всех элементов с определённым классом. И значения в этом массиве являются
строковым типом данных.
Образно, код выглядит следующим образом:
<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 идёт строгое равенство
=== и сравнить строчные с численными нельзя. Как в такой ситуации сравнить два массива и найти совпадения?