1
使用平面列表并寻找一种有效的方法来组合列表元素,同时删除重复的元素。每个元素都有一个唯一的键值,以知道它是否是重复的。最有效的方法来合并数组删除重复
我目前的执行力度使用concat功能:
Array.prototype.unique = function() {
var a = this.concat();
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i].key === a[j].key)
a.splice(j--, 1);
}
}
return a;
};
const OldArray = this.state.data;
const NewArray = [] //contains values we loaded in
const FinalArray = OldArray.concat(NewArray).unique();
//Update the State
this.setState({
data: FinalArray
)}
这绝对作品,但每到这个函数运行其至少N^2的效率,这似乎是坏的。有一个更好的方法吗?我觉得必须有..
'新地图(arr1.concat(ARR2).MAP(O => [问题o [键],O]))'也可以用于创建'Map'。 – 4castle
确实。但是,有一点警告。查看更新的答案。 –