从对象数组中过滤重复项

时间:2017-11-09 19:29:45

标签: javascript arrays

我有一个需要填充的数组,没有重复的对象。但是,我不断被发回一个包含重复值的数组。谁能告诉我这里我做错了什么以及如何解决它?

let holderArr = [
{
    one: "A",
    two: 2,
    three: "String"
},
{
    one: "B",
    two: 2,
    three: "String"
},
{
    one: "A",
    two: 2,
    three: "String"
}]

function removeDuplicates(array){
    let filteredArr = [];
    return duplicateArray.filter((duplicate) => {
        let id = [duplicate.one, duplicate.two].join("|");
        if(filteredArr.indexOf(id) === -1){
            filteredArr.push(id);
        }
        return out;
    })
}
removeDuplicates(holderArr);

2 个答案:

答案 0 :(得分:0)

我不是专业人士,但通过这种方式可行。

let holderArr = [1,3,5];

function removeDuplicates(array){
    var filteredArr = [];
for(let i=0; i<array.length; i++){
  if(filteredArr.indexOf(array[i]) === -1){
            filteredArr.push(array[i]);
        }
    }
    return filteredArr;
}
removeDuplicates(holderArr);

我看了你的代码。你在某些方面有误。 在这些编辑之后它会起作用,试着弄清楚你在哪里弄错了。

function removeDuplicates(array){
  let filteredArr = [];
  return array.filter((id) => {
      if(filteredArr.indexOf(array[id]) === -1){
          filteredArr.push(array[id]);
      }
      return filteredArr;
  })
}
removeDuplicates(holderArr);

答案 1 :(得分:-1)

看起来您指的是未知变量duplicateArray,请尝试:

function removeDuplicates(array){
  return array.filter(function(item, pos, self) {
    return self.indexOf(item) == pos;
  })
}

let uniqueArray = removeDuplicates(holderArr);

这将填充您想要的uniqueArray。