首页 > 解决方案 > 删除重复错误,未定义数组 [x]

问题描述

我正在尝试从节点传递的数据中删除重复项。获取数据的函数是:

getProducts(_) {
     const dev = "http://localhost:3008/api"
      fetch(dev) 
      .then(res => res.json())
      .then(data => {
       /* this.setState
        ({
          data: data.data
        })
      })*/
     this.removeDuplicates(data) 
      })
    }

我的删除重复功能是:

removeDuplicates(arr){ 
    let array = arr.data
  console.log(array)
    array.sort((a,b) => {return a.webservice - b.webservice}) 
  let length = array.length 
   for ( var i = 0; 
          i < length; 
          i++ ){
            let x = i+1
           console.log(array[x].webservice)
    /*  if (array[i].webservice == array[x].webservice){
        delete array[i]
      }*/
     // console.log(array)
      }
  }

当我 console.log data- 它按预期返回对象数组。当我 console.log 时array[i].webservice- 它返回 web 服务但是当我尝试对array[x].webservice(即 i+1)做同样的事情时,它返回 array[x] 是未定义的致命错误,但仍然 console.logs 数据。

我在这里错过了什么吗?

标签: javascriptarraysnode.jsreactjsjavascript-objects

解决方案


更仔细地查看这部分代码:

for (var i = 0; i < length; i++ ){
  let x = i+1;
  // ...etc....
}

假设数组的长度为3。当i = 2时,它小于3,所以循环将执行;x = i + 1 = 2 + 1 = 3。然后您尝试访问array[3]-但长度为 3 的数组仅从 0 变为 2!那将试图访问超出数组的范围,因此会出现错误。


推荐阅读