从对象数组中删除重复值

时间:2017-11-18 11:20:48

标签: javascript arrays angularjs

我创建了angularjs应用程序,其中我制作了测验模块,其中问题1-5具有相同的描述,然后问题6-7具有相同的描述,因此我将相同的描述保存到每个问题并在下一个逐个显示它们按钮。现在功能是改变我想在单个页面上显示所以我现在使用ng-repeat问题是问题描述也在重复,所以同样的描述显示我的JSON就像每个1-5个问题

[ { 
  description:'xxxxxx',
  question:'abcd',
  correctAnswer:'A',
  hasSameDesc:true
},
{ 
  description:'xxxxxx',
  question:'pqr',
  correctAnswer:'B'
  hasSameDesc:true
},
{ 
  description:'xxxxxx',
  question:'XYZQ',
  correctAnswer:'A'
  hasSameDesc:true
}] and so on

现在我想在第一个问题上面显示一次描述,仍然是2-5的问题仍然没有描述 所以任何人都有建议我该怎么做? 比较先进的。

2 个答案:

答案 0 :(得分:0)

如果可能,我会将您的JSON对象属性"问题1","问题2"等等重命名为"问题",否则您&# 39;基本上迭代不同对象的数组,这会让事情变得更难。

<div ng-repeat="question in questions track by $index">
  <h1 ng-if="$index == 0 || $index == 5"> {{question.description}} </h1>
  <span>{{question.question}}</span>
</div>

这接近你的意思吗?基本上使用ng-repeat,您可以选择要迭代的对象的哪些属性。

答案 1 :(得分:0)

在显示之前过滤数组会很好。

这个例子是第一个适当的值。您可以修改条件以查找完全或部分uniq对象

let data = [ { 
  description:'xxxxxx',
  question1:'abcd',
  correctAnswer:'A',
  hasSameDesc:true
},
{ 
  description:'xxxxxx',
  question2:'pqr',
  correctAnswer:'B',
  hasSameDesc:true
},
{ 
  description:'xxxxxx',
  question3:'XYZQ',
  correctAnswer:'A',
  hasSameDesc:true
},
{ 
  description:'yyyyy',
  question3:'XYZQ',
  correctAnswer:'A',
  hasSameDesc:true
}];

let uniq = data.filter((elem, index, self) => {
  return index == self.findIndex(e => elem.description == e.description)
})

console.log(uniq)