我想删除重复项而不在Javascript中排序

时间:2013-09-25 11:08:36

标签: javascript asp.net arrays duplicates

使用Javascript:

function Add(){
    var mydiv = document.getElementById("mydiv");
                var images = mydiv.getElementsByTagName("img");
                var dydiv = document.createElement("div");        


                for (var i = 0; i < images.length; i++) {              

                        var elem = document.createElement("img");
                        elem.setAttribute("src", images[i].src);
                        elem.setAttribute("height", "100%");
                        elem.setAttribute("width", "100%");
                        dydiv.appendChild(elem);

                    }
}

HTML

<input type="button" onclick="Add()" value="Add"/>

    <div id="mydiv">
      <asp:Repeater id="rpt" runat="server">
        <itemtemplate>
                <div >
                    <img src='<%#Eval("img")%>' alt="No Image" />
                </div>

         </temtemplate>
       </asp:Repeater> 


         </div>

这里我在Images数组对象中获取重复值。由于有4张图片,我得到8张图片。(顺便说一句我不明白为什么我会得到重复:-()现在我想要删除重复项而不进行排序.plz帮助我......

2 个答案:

答案 0 :(得分:1)

希望这个逻辑从数组中删除重复可能会有所帮助。我不是说复制它并粘贴它。我只想分享逻辑,其余的我认为你可以弄明白。

var items = ["milk","bottle","mobile","cups","milk","screen","table", "toothpaste"];
var filteredItems= [];
$.each(items, function(i, element){
    if($.inArray(element, filteredItems) === -1) filteredItems.push(element);
});

数组:filteredItems将包含唯一值而不对原始数组进行排序。
希望能为您服务。

答案 1 :(得分:0)

这可能是因为当您将图像附加到文档时,图像HTMLCollection(图像)的大小会增加。

如果我var images = document.getElementsByTagName('img');,我会得到一个包含我查找过的所有元素的HTMLCollection。

如果我那么去做:

var newImage = document.createElement('img');
document.getElementsByTagName('body')[0].appendChild(newImage);

HTML集合现在也包含新图像。

您可能要尝试完成的是更改已存在的图像的高度,宽度和宽度。在这种情况下,您不必创建新元素然后追加它,您可以循环遍历HTMLCollection并更改HTMLCollection中元素的高度,宽度和src。