获取数组中的元素并与数字进行比较

时间:2017-01-20 23:33:02

标签: javascript jquery arrays loops

我需要在数组与数组内的元素之间进行比较。我试图循环数组但它不起作用。我在这里举了一个例子。我在想如果我在阵列中找到相同的数字它会起作用。我的意思是我希望蓝色在示例中,但它的黄色。我怎样才能使它发挥作用?



<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
// Add "Duplicate Record " to either the input title field or input name field - depending on if either exist, otherwise find the first text field.
  var $e = $(this);
    if ( $e.is("input[name='title']") ) {
            var selector = "input[name='title']";
      }
    else if ( $e.is("input[name='name']") ) {
            var selector = "input[name='name']";
      }
    else {
            var selector = "input[type=text]:first";
      }

  var oldValue = $(selector).val();
  var newValue = "<?php echo escapeJs(t('Duplicate Record ')); ?>" + oldValue;
  $(selector).val(newValue);
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

您可以使用Array.includes()执行此操作。如果为true,则代码的问题是没有break语句,因此它会一直运行并最终以最终数字结束,这是决策者。

var rain = [1072,1050,1053,1168,1080,1183,1171,1063,1083,1086,1089,1240,1273];
var number = 1072;
if (rain.includes(number)) {
    $('body').css('background', 'blue');
} else {
    $('body').css('background', 'yellow');
}

答案 1 :(得分:2)

它是黄色的,因为即使在找到for之后,您的1072循环也会继续运行。基本上,如果rain数组中的最后一个元素与给定number中的最后一个元素相同,则函数会更改颜色,因为它是for循环中查看的最后一个值。 如果你想在找到数字时停止循环,你可以在那里添加一个return语句。

但还有另外两种方法:

if(rain.indexOf(number) !== -1){
  //change color to yellow
}else{
  //change color to blue
}

或者,正如Sterling Archer所说,使用includes