messages.includes不是javascript函数

messages.includes不是javascript函数,javascript,Javascript,我试图检查一个数组中的字符串是否存在于另一个数组中。“data”,函数的参数是一个包含消息的数组。但是我得到了错误“uncaughttypeerror:messages.includes不是函数”。有什么解决办法吗?提前谢谢 socket.on('show_all_messages', function(data) { // console.log(data); var messages = document.getElementById('messages').chi

我试图检查一个数组中的字符串是否存在于另一个数组中。“data”,函数的参数是一个包含消息的数组。但是我得到了错误“uncaughttypeerror:messages.includes不是函数”。有什么解决办法吗?提前谢谢

   socket.on('show_all_messages', function(data) {
     // console.log(data);
     var messages = document.getElementById('messages').children;
      len = data.length;
      for (i = 0; i < len; i++) {
        if(!(messages.includes(data[i])))
              {
              const newNode = document.createElement('div');
              newNode.innerHTML = data[i];
              document.getElementById('messages').appendChild(newNode);
            }
        } 

    })
socket.on('show_all_messages')函数(数据){
//控制台日志(数据);
var messages=document.getElementById('messages').children;
len=数据长度;
对于(i=0;i
消息
对象来自使用
.children
返回
HTMLCollection
而不是
数组
,因此没有
包含
函数

我假定您希望在
数据
数组中搜索每个子元素的文本以查找匹配项。因此,我假设您的html如下所示:

<div id='messages'>
  <span>Some text</span>
  <span>More text</span>
  <span>Other stuff</span>
</div>
for (let i=0; i<messages.length; i++) {
  if (messages[i].textContent && 
      messages[i].textContent.indexOf(data[i]) >= 0) {
    const newNode = document.createElement('div');
    newNode.innerHTML = data[i];
    document.getElementById('messages').appendChild(newNode);
  }
} 

但这将导致在外部元素中添加新的
节点。这就是你想要的吗?

包含
是数组对象上的函数,但是
消息
不是数组。那么解决方案是什么呢?不,对不起,不完全是这样。但我认为主要的问题是“var messages=document.getElementById('messages').children;”您是否有其他方法将div的子元素保存到数组中?您能否在问题中显示html的结构?