首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数组中删除重复条目(javascript)

从数组中删除重复条目(javascript)
EN

Stack Overflow用户
提问于 2014-07-11 21:02:52
回答 2查看 212关注 0票数 1

我试图使用javascript删除数组中的重复条目,在数组中,重复项将始终位于长度为1的数组中。

代码语言:javascript
运行
复制
[  [23, 46, 43, 44]
   [46]
   [52, 51]       
   [53]
   [44]
   [55, 66] ]

在这种情况下,我希望删除数组46和44,但保留53。这些单项重复数组的数目是可变的。想法?

编辑:下面是我最后所做的工作,stacks_array是数组的数组。

代码语言:javascript
运行
复制
function stacks_sanatizer(stacks_array){

    var output_array = [],      
    used_cards =[];
    used_cards[70] = undefined;     

    for (each_stak in stacks_array){
        if((stacks_array[each_stak].length > 1) && (stacks_array[each_stak] !== "")){
            for (i=0; i<stacks_array[each_stak].length;i++){
                var card_number = stacks_array[each_stak][i].attrs.fill.substr(27).replace('.jpg)','');
                used_cards[card_number - 1] = true;
            }
        }
    }

    for (each_stak in stacks_array){
        if(stacks_array[each_stak] !== ""){
            if(stacks_array[each_stak].length === 1){
                card_number = stacks_array[each_stak][0].attrs.fill.substr(27).replace('.jpg)','');
                if(used_cards[card_number - 1] !== true){
                    output_array.push(stacks_array[each_stak]);
                    used_cards[card_number - 1] = true;
                }
            }
            else{
                output_array.push(stacks_array[each_stak]);
            }
        }
    }

    //delete doubles    
    for(each_pile in output_array){ 
        output_array[each_pile] = output_array[each_pile].filter(function(elem, pos) {
            return output_array[each_pile].indexOf(elem) == pos;
        })  
    }
    return output_array;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-11 21:39:43

为了实现这一点,伪代码:

  1. 迭代外部数组:对于每个内部数组,将数字散列到哈希表中。
  2. 当您将其散列到表中时,如果存在该数组的现有条目,请检查该数组的长度是否为1,如果是,请删除该数组。
  3. 否则,在哈希表中输入条目并保留该内部数组be。

希望这会有所帮助:)

票数 1
EN

Stack Overflow用户

发布于 2014-07-11 21:35:27

您可能希望使用散列的一些组合来查找冲突,然后拼接您不想退出的内容。

就像这样:

代码语言:javascript
运行
复制
function removeDuplicates(listOfLists) {
    var hash = {};
    for (var i = 0; i < listOfLists.length; i++) {
        var array = listOfLists[i];
        for (var j = 0; j < array.length; j++) {
            var val = array[j];
            var hashedVal = hash[val];
            if (hashedVal === undefined) {
                hash[val] = true;
            }
            else {
                array.splice(j, 1);
                if (array.length === 0) {
                    listOfLists.splice(i, 1);
                }
            }
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24706509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档