从Array中删除重复的字符串

时间:2010-09-20 21:41:08

标签: javascript arrays

我有以下动态生成的数组:

,<div id="layer0" style="left: 470px; top: 286px;">Some Text</div>
,<div id="layer0" style="font-size: 68px; left: 70px; top: 286px; ">SomeText</div>
,<div id="layer1" style="font-size: 18px; left: 60px; top: 286px; ">SomeText</div>
,<div id="layer2" style="font-size: 18px; left: 50px; top: 286px; ">SomeText</div>

前两个条目不完全重复,但具有相同的“id”:layer0。第二个是不同的,因为它具有css字体大小的适当性。

如何删除此数组中具有重复“id”但可能在确切形式上有所不同的第一个。

阵列通过以下方式组合在一起:

var allcode = $.merge([oldarray],[newarray]) 

oldarray中的某些副本我需要摆脱。 谢谢。

1 个答案:

答案 0 :(得分:1)

我认为你应该更加谨慎地组合阵列,而不是将它们混合在一起并在以后清理。

function matchId(htmlstring){
    var match = htmlstring.match( new RegExp(/id=\"([^\"]+)\"/i) ); 
    if (match && match[1]) {
        return match[1];
    }
    return '';
}

for (var j=0; j < oldarray.length; j++) {

    var exists = false;

    for (var k=0; k < newarray.length; k++) {

        var newId = matchId(newarray[k]);
        var oldId = matchId(oldarray[j]);

        if (newId == oldId) {
            // element already exists.
            exists=true;
            break;
        }
    }

    if (!exists) {
        newarray.push( oldarray[j] );
    }
}