我不是在寻找简单数组的答案,但是当我有嵌套的对象数组时我遇到了问题。
到目前为止,我已经看到了简单数组的类似答案,但没有看到复杂的嵌套数据。
下面是我的重复数组,它有子级别的项目和对象,我想匹配文件对象名称,并根据它找到重复项。
我尝试应用以下功能但是,它对我不起作用。请告诉我如何将以下函数修改为我的数组?
var myArr = [
{file: {name: "sakthi1.jpg"}, checked: true},
{file: {name: "sakthi2.jpg"}, checked: true},
{file: {name: "sakthi2.jpg"}, checked: true},
{file: {name: "sakthi2.jpg"}, checked: true}
];
function removeDuplicates(myArr, prop) {
return myArr.filter((obj, pos, arr) => {
return arr.map(mapObj => mapObj[prop]).indexOf(obj[prop]) === pos;
});
}
答案 0 :(得分:1)
我认为你可以在javascript中使用地图。遍历数组,将唯一元素(在您的案例名称中)存储在地图中。并检查它是否存在于地图中,如果存在,则从当前索引中删除该元素。否则将'名称'放在地图中。
let myArr = [{file: {name: "sakthi1.jpg"}, checked: true}, {file: {name: "sakthi2.jpg"}, checked: true}, {file: {name: "sakthi2.jpg"}, checked: true}, {file: {name: "sakthi2.jpg"}, checked: true}];
let mapOfUniqueElements = new Map();
function removeDuplicates(myArr, prop) {
$.each(myArr,function(k,v){
let name = v['file']['name'];
if(mapOfUniqueElements.get(name)){
//remove the element from array
}else{
mapOfUniqueElements.set(name, 'present');
}
})
};