【发布时间】:2017-09-02 12:56:49
【问题描述】:
我想找到包含自定义属性 mod 的 div 元素,而不是将该 div 附加到列表项。但首先我必须删除包含重复 mod 值的 divs。这是我所做的
<div class="list"></div>
<div class="container">
<div mod="dog"></div>
<div mod="man"></div>
<div mod="woman"></div>
<div mod="dog"></div>
<div mod="bird"></div>
<div mod="insects"></div>
<div mod="dog"></div>
</div>
这是我的脚本
modArr($('.container').find('[mod]'))
function modArr(el){
var filterArray = [] // store mod
, modNames = [] // store mod value
, arrIndex = [] // store non duplicate index
, li = [] // store
modArray = el
// store mod value
for(var i=0; i < modArray.length; i++){
modNames.push($(modArray[i]).attr('mod')) // get mod value from div
}
// search for non duplicate mod value and get the index of none duplicate mod
for(var i=0; i < modArray.length; i++){
if(filterArray.indexOf(modNames[i]) === -1){
filterArray.push(modNames[i])
arrIndex.push(i) // push non duplicate index value
}
}
filterArray = [] // reset filterArray
// push module from modArray to filterArray using index in arrIndex
for(var i=0; i < arrIndex.length; i++){
filterArray.push(modArray[arrIndex[i]])
}
// push to li array
$.each(filterArray,function(i,el){
li[i] = '<li>'+ el.outerHTML +'</li>'
})
$('<ul></ul>')
.append(li.join(''))
.appendTo('.list')
}
你可以看到我已经习惯了很多循环,有什么简单的方法可以做到这一点。谢谢!
【问题讨论】:
-
那么,您是要删除所有重复的实例还是保留其中一个?
-
我想一直想要他们
-
pagedemos.com/qcjkz8mqaq2r 是一种非常快速的方法
标签: javascript jquery arrays duplicates