从Javascript数组中删除重复项时出错
更新 这里有一个小问题:当我运行代码并查看控制台时,我看到它是console.logging数组中的另一个数字 谢谢你的回复,很抱歉我被否决了,但这真的让我困惑 我用不同的数字又试了一次,我想知道你们能不能在你们这边测试一下这些数字,看看你们能不能得到不同的结果从Javascript数组中删除重复项时出错,javascript,arrays,Javascript,Arrays,更新 这里有一个小问题:当我运行代码并查看控制台时,我看到它是console.logging数组中的另一个数字 谢谢你的回复,很抱歉我被否决了,但这真的让我困惑 我用不同的数字又试了一次,我想知道你们能不能在你们这边测试一下这些数字,看看你们能不能得到不同的结果 var myArray = [621608617992776, 621608617992776, 10156938936550295, 621608617992776, 10156938936550295, 1015693893
var myArray = [621608617992776, 621608617992776, 10156938936550295, 621608617992776, 10156938936550295, 10156938936550295, 621608617992776, 10156938936550295];
console.log(myArray);
var myArrayTrimmed = [];
for(var i in myArray){
if(myArrayTrimmed.indexOf(myArray[i]) === -1){
myArrayTrimmed.push(myArray[i]);
}
}
console.log(myArrayTrimmed);
这给了我控制台中的以下数组:
[621608617992776, 10156938936550296]
由于某种原因,第二个数字增加了1
====================
原始问题:
我有这个阵列:
var myArray = [100, 200, 100, 200, 100, 100, 200, 200, 200, 200];
我正在尝试创建一个名为myArrayTrimmed
的新数组,该数组与上面的数组相同,只是将删除重复的数组。这将导致:
var myArrayTrimmed = [100, 200];
这是我用来实现这一目标的代码:
var myArray = [100, 200, 100, 200, 100, 100, 200, 200, 200, 200];
var myArrayTrimmed = [];
for(var i in myArray){
if(myArrayTrimmed.indexOf(myArray[i]) === -1){
myArrayTrimmed.push(myArray[i]);
}
}
console.log(myArrayTrimmed);
这无法正常工作,在删除重复项时,由于某种原因,它从200中减去了数字1
,因此控制台中的输出为:
[100, 199]
我认为这一定是由于代码中的
-1
,但我不知道如何删除重复项 您可以使用下面的代码有效地删除重复的元素-
var myArrayTrimmed = myArray.filter(function(elem, pos) {
return myArray.indexOf(elem) == pos;
});
您的myArrayTrimmed将包含唯一值。希望这会有用
var myArray = [100, 200, 100, 200, 100, 100, 200, 200, 200, 200];
var myArrayTrimmed = [];
myArray.forEach(function(item){
if(myArrayTrimmed.indexOf(item) ==-1){
myArrayTrimmed.push(item);
}
})
console.log(myArrayTrimmed);
检查一下这个我相信这是最好的方法
var myArray=[100200100200100100200200200200200],
reduced=Object.keys(myArray.reduce((p,c)=>(p[c]=true,p),{});
控制台日志(减少)如果你看到了,你必须有额外的代码没有发布在这里。这很有效。将这段代码复制到浏览器控制台中,您将看到预期的结果。-1是indexOf方法在找不到匹配项时返回的值,因此这是一个麻烦。在最新的Firefox和IE10中尝试了它,除了jQuery和ES2015之外,都输出了预期的结果100200FWIW“我将再添加一个解决方案-uq.uniq,我不明白为什么这个答案是-1,它有什么问题。我认为这是另一种非常酷的消除重复的方法。是的,这是一种优雅的方法。而不是写几行代码。今天晚些时候,我将在随机、无序的大规模数组上对这个解决方案与我的解决方案进行基准测试比较。我很想知道结果。谢谢:)