【发布时间】:2020-04-12 08:48:46
【问题描述】:
我正在尝试从节点传递的数据中删除重复项。获取数据的函数是:
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 - 它返回网络服务
但是当我尝试对array[x].webservice(即 i+1)执行相同操作时,它返回 array[x] 是未定义的致命错误,但仍然 console.logs 数据。
我在这里遗漏了什么吗?
【问题讨论】:
-
我建议使用lodash。它具有您正在寻找的过滤功能。
-
能否展示
data的一些示例内容 -
一个经验法则是永远不要改变正在循环的数组或更改索引。你在这里做这两件事。减少功能会更好地过滤掉唯一性。 @user615274 提供的array.reduce 函数是一个很好的解决方案。
标签: javascript arrays node.js reactjs javascript-objects