jQuery.inArray()不起作用

时间:2017-10-25 08:29:51

标签: javascript php jquery arrays

我需要检查一下我从PHP获得的数字数组中是否存在数字,如果是,则呈现来自iosocket的数据。但由于某些原因,这段代码不起作用。 数组返回20,25,要检查的数字是20 f.example

<script>
var negozi_seguiti = <?php echo json_encode($negozi_seguiti); ?>;
var post = io('http://1clickfashion.com:3002');
post.on("test-channel:App\\Events\\Post", function(message){
  // increase the power everytime we load test route 
  alert(negozi_seguiti);
  if (jQuery.inArray(negozi_seguiti, message.data.negozio) == -1) {
    $('#timeline').addClass("timeline");
    $('#timeline').prepend(message.data.timeline);
    $('#rocket').hide();
  }
});
</script>

我错了什么?

2 个答案:

答案 0 :(得分:2)

你误用了inArray,你反驳了论点,就像这样使用它:

var arr = [20, 21];

console.log($.inArray(20, arr))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我还建议你使用indexOf,它的工作方式相同,但直接在数组上调用,可以降低犯这样错误的风险:

var arr = [20, 21];

console.log(arr.indexOf(20));

它使你的代码更清晰,你摆脱了jQuery,最后它是faster

答案 1 :(得分:0)

如果您在数组negozi_seguiti变量中获得了适当的价值,那么您需要更改$.inArray('search_value', 'yourarray'),如下所述。

var negozi_seguiti = <?php echo json_encode($negozi_seguiti); ?>;
var post = io('http://1clickfashion.com:3002');
post.on("test-channel:App\\Events\\Post", function(message) {
  // increase the power everytime we load test route 
  alert(negozi_seguiti);
  if (jQuery.inArray(message.data.negozio, negozi_seguiti) == -1) {
    $('#timeline').addClass("timeline");
    $('#timeline').prepend(message.data.timeline);
    $('#rocket').hide();
  }
});