检测来自Socket.IO的数组中的值

时间:2018-02-27 16:20:02

标签: javascript socket.io

我从网页客户端

向SOCKET.IO服务器发送一个数组
var trads = 4000+','+7000+','+6000+','+2000+','+4398+','+6094;
var temp = new Array();
temp = trads.split(',');

socket.emit("assign", temp);

我的SOCKET.IO服务器接收数组并发送到其他网页 client.php

socket.on("assign", function(data){
    var temp = data;
    socket.broadcast.emit("check", temp);
});

client.php (在数组中有输入值)我想在控制台中显示一条消息:

<html>
<body>
<input type="text" id="num" value="4000">
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js">
</script>

<script>

 var socket = io.connect(URL_SERVER);

 socket.on("check",function(data){
   var temp = data;
   var idtr = $("#num").val();

  console.log(temp);

  if(idtr in temp){
    console.log("It has value");
  } else {
    console.log("It has no value");
  }
});
</script>
</body>
</html>

但它仍然显示“它没有价值”的信息。我该如何解决?

2 个答案:

答案 0 :(得分:0)

您可以使用indexOf()

  if(temp.indexOf(idtr) > -1){
    console.log("It has value");
  } else {
    console.log("It has no value");
  }

indexOf返回索引。因此,您可以使用它来访问您的价值。

编辑:我错过了-1条件。 indexOf return -1如果找不到任何内容

答案 1 :(得分:0)

我发现解决方案根据indexOf()结果进行验证。

var index = temp.indexOf(idtr);

if(index>=0){
    console.log("It has value");
} else {
    console.log("It has no value");
}