首先需要看下 这些元素在哪些元素的范围内 比如在一个大Div的包围中
可以这样取
//取出元素var aLi=document.getElementById('div').getElementsByTagName('li')
var aId=[]//建立一个空数组用于存放ID
//然后遍历整个li元素 取出ID
for(var i=0i<aLi.lengthi++){
aId.push(aLi[i]['id'])
}
//到这一步 这时候的aId数组就存有所有元素的ID了
更优质的教程来自 绿叶学习网
function myFilter(arr1,arr2) {return arr1.filter((ele) =>
arr2.filter((x) => x.id === ele.id).length > 0
)
}
在 chrome 浏览器下测试可行。
答案里为了简洁,使用了箭头函数。主要思路就是利用 Array 的 filter 函数。
该函数接受一个回掉函数作为参数,就是如何过滤想要的内容,满足条件的返回为true。
它并不要求b里的id都在a里,只要是共有的id都会选中。
如果是b里的id 都在a里的话,可以尝试这个方法。
function myFilter2(arr1,arr2) {var ret = []
arr2.forEach(
ele => {
var findEle = arr1.find(x => x.id === ele.id )
// 如果在arr1中找到,添加到arr1中
findEle ? ret.push(findEle) : ''
}
)
return ret
}
这个思路是把b中的每一个id都在a中找一下。
var list = [
{ id: "1", name: "test1", rName: "the1" },
{ id: "1", name: "test1", rName: "the2" },
{ id: "1", name: "test1", rName: "the3" },
{ id: "2", name: "test2", rName: "the1" },
{ id: "2", name: "test2", rName: "the2" },
{ id: "3", name: "test3", rName: "the1" }
]
var list2 = []
for (var i in list) {
var list3 = []
for (var j in list) {
if (list[i].id == list[j].id&&list[j].key!=1) {
list[j].key=1
list3.push(list[j])
}
}
if(list3.length>0){
list2.push(list3)
}
}
console.log(list2)