javascript - 删除具有各种属性的对象数组中的重复项
问题描述
我有一组具有一些属性的对象。如果 cod 和 art 已经存在于数组中,我想删除重复的。
我为此创建了一个函数,但我的结果是错误的......我有 2 行而不是 3 行。
谁能帮我?
.TS
data = [
{
cod: 1.13,
art: 'BCC'
},
{
cod: 1.13,
art: 'BCC'
},
{
cod: 1.13,
art: 'BCC'
},
{
cod: 1.14,
art: 'BCC'
},
{
cod: 1.14,
art: 'BCC'
},
{
cod: 1.13,
art: 'AAA'
},
{
cod: 1.13,
art: 'AAA'
}
];
ngOnInit() {
var filtered = this.data.filter(function(el) {
if (!this[el.cod && el.art]) {
this[el.cod && el.art] = true;
return true;
}
return false;
}, Object.create(null));
console.log(filtered);
}
//Expected Output
// data = [
// {
// cod: 1.13,
// art: 'BCC'
// },
// {
// cod: 1.14,
// art: 'BCC'
// },
// {
// cod: 1.13,
// art: 'AAA'
// }
// ];
解决方案
您可以使用地图来实现您的目标
ngOnInit() {
let map = new Map();
this.data.forEach(eachItem => map.set(eachItem.cod + '-' + eachItem.art, eachItem));
console.log('unique items:', Array.from(map.values()));
}
推荐阅读
- python - Python 日历
- css - 如何动态更改数组中的css颜色
- c++ - constexpr if 和返回值优化
- php - 为什么当我尝试使用 PHP 登录时我的页面会重新加载?
- c++ - Visual Studio 无法附加到 Centos 上的 C++ 进程?
- android - Volley JSON 请求仅返回前两个值
- android - 这个表达式是否可以通过 Retrofit 获得嵌套数组?
- activemq-artemis - ActiveMQ Artemis 集群故障转移问题
- java - JAVA IF 语句将如何评估 if || (OR) 和 && (AND) 放在同一个 if 语句中
- python - python资源中的软硬限制