我在尝试使用正则表达式之前发布了有关此内容的文章,但这次有点不同。
所以我有这个包含 500 个电话号码的列表。以下是其中的一个小示例:
{
8664665844
8885444636
8664604776
8776434327
8887441938
8882642882
8888097429
8668943258
8777711234
8669894327
}
它看起来有点不同,这是在我的mongoDB服务器上,所以它更像是一个具有唯一uid的对象数组......所以例如:
[
{
_id: kasjf234lkj109euf9023u4n,
field1: 8669894327,
}
]
类似的东西对。
所以基本上,我的网络应用程序正在使用一个数字的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?
}
}
}
}
。这个逻辑开始伤害我的头...
我知道有一个"include(("方法,但我并没有真正使用它,当我在这种情况下尝试它时,它给了我所有错误的东西,即使我用来比较的列表只是我的服务器上"basenums"列表的副本。
这样做更"正确"的方法是什么?
我正在尝试将数组与数组进行比较。不是其特定数组中的值到其自己的数组。
因此,与其将其标记为重复项,也许您应该重新阅读:
我有 2 个数字数组:[1, 2, 3, 4, 5, 6]和 [1, 2, 3, 4, 5, 6] 我如何获取数组 a 索引 0 并将其与数组 b 进行比较每个索引,然后获取数组 a 的索引 1 并与数组 b 中的每个索引进行比较,依此类推,直到我> arrayA.length。
不要试图一步到位地完成所有事情。将您的问题分解为更小的块:
- 将 mongo 的响应格式化为可以有效查询的哈希映射 (O(1((
- 根据此地图测试每个输入数字
第 1 步:
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);
顺便说一下,对于这段代码,我从这个页面得到了帮助:https://medium.com/front-end-hacking/getting-unique-values-in-javascript-arrays-17063080f836