Javascript 筛选重复项的最佳方法?
在尝试使用正则表达式之前,我发布了这方面的信息,但这次有点不同 所以我有500个电话号码的清单。以下是其中的一个小示例:Javascript 筛选重复项的最佳方法?,javascript,arrays,compare,logic,frontend,Javascript,Arrays,Compare,Logic,Frontend,在尝试使用正则表达式之前,我发布了这方面的信息,但这次有点不同 所以我有500个电话号码的清单。以下是其中的一个小示例: { 8664665844 8885444636 8664604776 8776434327 8887441938 8882642882 8888097429 8668943258 8777711234 8669894327 } 它看起来有点不同,这是在我的mongoDB服务器上,所以它更像是一个
{
8664665844
8885444636
8664604776
8776434327
8887441938
8882642882
8888097429
8668943258
8777711234
8669894327
}
它看起来有点不同,这是在我的mongoDB服务器上,所以它更像是一个具有唯一uid的对象数组。。。例如:
[
{
_id: kasjf234lkj109euf9023u4n,
field1: 8669894327,
}
]
差不多吧
所以基本上,我的webapp使用的是一个csv文件,其中包含你想要与你的基本数字进行比较的数字
我的第一个想法是使用for、while、for循环之类的东西,但我不确定它的效果如何:
for(var i = 0; i < basenums.length; i++){
while ( i >= 0 ){
for(var j = 0; j < comparing.length; j++){
if comparing[j] == basenums.field1[i]{
push that number to a 'dupes' array
}else{
break or something?
}
}
}
}
for(变量i=0;i=0){
对于(var j=0;j<0.length;j++){
如果比较[j]==basenums.field1[i]{
将该数字推送到“重复”数组
}否则{
休息还是什么?
}
}
}
}
…这种逻辑开始伤害我的头
我知道有一个“includes()”方法,但我并没有真正使用它,当我在本例中尝试它时,它给出的所有结果都是错误的,即使我用来比较的列表只是我服务器上“basenums”列表的一个副本
更“正确”的做法是什么
我试图将数组与数组进行比较。不是其特定数组中的值,而是它自己的数组
因此,与其将其标记为副本,不如重新阅读:
我有两个数字数组:[1,2,3,4,5,6]和[1,2,3,4,5,6]如何获取数组a的索引0并将其与数组b的每个索引进行比较,然后获取数组a的索引1并与数组b中的每个索引进行比较,依此类推,直到I>arrayA.length。不要试图在一步中完成所有操作。把你的问题分成小块:
var hashmap = {}
basenums.forEach(function(basenum) {
hashmap[basenum.field1] = true;
})
步骤2:
var dupes = [];
comparing.forEach(function(comparingNum) {
if(hashmap[comparingNum]) {
dupes.push(comparingNum);
}
})
编辑:我不确定是否要将复制品作为一个集合(唯一阵列)。如果是这样,您可以使用备用步骤2:
var dupesMap = {};
comparing.forEach(function(comparingNum) {
if(hashmap[comparingNum]) {
dupesMap[comparingNum] = true;
}
})
var dupes = Object.keys(dupesMap);
您可以将值推入数组,并使用该数组创建一个新集合。集合中不保留冗余元素。试试这个
let a = ["a","b","a","b","a","b","a","b","a","c"];
console.log(a);
let uniqueA = [...new Set(a)];
console.log(uniqueA);
顺便说一句,对于这段代码,我从这个页面得到了一个帮助:这会起作用,但我有arrayA和arrayB,我宁愿暂时保持这种方式。嗯。。我将对此进行一点探讨。它似乎会起作用,但老实说,我几乎不了解这里发生了什么……对象“hashmap”到底是什么。。?在JavaScript中,任何对象(
{}
)都是一个映射-一个键/值存储。在本例中,我称之为hashmap。我也可以叫它kownNumberStore或类似的东西。接下来,我将构建一个类似于{'8664665844':true,'8885444636':true}
的映射/对象,以便我可以通过hashMap['8885444636']
询问该对象是否存在具有该数字的条目/值。它并没有做更多的事情——它只是作为一个查找工具。只是说得清楚一点,我必须制定搜索数组的逻辑,是吗?因为一切都是真实的。lolThis似乎不起作用,虽然我不知道为什么。。。hashmap使用“basenum”的键值对创建和创建对象:如它所说的那样为true。但是,它似乎没有进入第二个forEach循环。。我想我将使用单独的方法,然后再试一次。是的,无论出于什么原因,它似乎不会进入下一个forEach循环。在比较数组时查找匹配的情况下。应该采取什么行动?DupeArray.push(foundDupe)