javascript - 删除重复错误,未定义数组 [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 数据。
我在这里错过了什么吗?
解决方案
更仔细地查看这部分代码:
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!那将试图访问超出数组的范围,因此会出现错误。
推荐阅读
- netlogo - Netlogo:如何使用行和列索引进行子集化
- python - ttk组合框选择同步入口状态
- amazon-web-services - AWS Batch:如何检查请求的 Fargate 资源是否与提供的资源匹配
- python - 在 Linux 中使用 python 参数化 Ansys Fluent
- r - 如何在最小元素上写条件?
- node.js - 使用 findById 方法时,我应该怎么做才能摆脱猫鼬的 Cast 错误
- spring-boot - Spring Security Authorization Server (experimental) - 示例项目,从 Gradle 到 Maven (Dependencies)
- xcode - 在 10 多个视图之间滑动
- android - 如果firebase没有身份验证,如何限制API密钥?
- python - 如何使用 Pyside 实现交互式 QAction?(即如何在 QAction 中捕获事件?)