gpt4 book ai didi

javascript - 搜索和删除数组中重复项的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:01 27 4
gpt4 key购买 nike

我有一个数组,其中一些元素是“重复项”,我想删除数组中的重复项。

所以比如左边的列表(数组)变成右边的数组:

Ingredients:             Ingredients:
Apples Apples
Apples Oranges
Oranges Bananas
Oranges
Oranges
Bananas

这样做的好算法是什么?

现在这是我的伪代码的样子:

for each element in ingredients (counter j)
for each element-below-current-element (counter k)
if ingredients[i] == element-below-current-element[j]
splice (delete) ingredients[i]

但现在的问题是,我注意到如果原始列表中的元素数量奇数,那么我可能会得到这样的结果:

Ingredients:             Ingredients:
Apples Apples
Oranges Oranges
Oranges Oranges
Oranges Bananas
Bananas

一切正常,除了我可能会因为一种成分而得到双份。

这是我的实际代码实现,使用 javascript 和一些 Angular 元素(例如 $scope),尽管它应该不是很重要。

    for(var j = 0; j < $scope.groceryList.length; j++){
for(var k = j+1; k < $scope.groceryList.length; k++){ // for each of elements below current element (j)
if ( $scope.groceryList[j].name == $scope.groceryList[k].name){
$scope.groceryList.splice(k, 1);
}
}
}

现在让我明白的是每当你删除一个数组元素时数组长度是如何减少的,​​这会导致你的计数器在下一次迭代中向前跳一个元素等等......

最佳答案

Underscore.js 是我推荐的工具,用于在 JavaScript 中完成所有数组处理(以及,就像,一切。它很棒。)

碰巧它的 uniq 方法将完全满足您的需求。

var myArray = ["Apples","Oranges","Oranges","Grapes","Apples"];
_.uniq(myArray);
//returns ["Apples","Oranges","Grapes"]

关于javascript - 搜索和删除数组中重复项的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17933745/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com