我想要实现的是过滤objects
数组,以便获得具有唯一 actor的对象数组。
所以这就是我现在所拥有的:
var objects = [{
actor: {
account: null,
degraded: false,
mbox: null,
mbox_sha1sum: "843c56da78f9eb888274d2d4e12ab1d748ec46234",
name: "name",
openid: null
},
capture: 'value'
},
{
actor: {
account: null,
degraded: false,
mbox: null,
mbox_sha1sum: "843c56da78f9eb888274d2d4e12ab1d748ec12345",
name: "name2",
openid: null
},
capture: 'value2'
},
{
actor: {
account: null,
degraded: false,
mbox: null,
mbox_sha1sum: "843c56da78f9eb888274d2d4e12ab1d748ec46234",
name: "name",
openid: null
},
capture: 'value3'
}
];
objects.filter((value, index, self) => {
return self.indexOf(value) === index;
}).map(ele => {
console.log(ele.capture);
});

但正如您所看到的,目前它不会过滤任何数组元素。
起初我认为return self.indexOf(value.value) === index;
可以解决这个问题,但这会返回一个空数组。
期望的结果是一个数组,它不包含最后一个数组元素,因为这个actor属性与第一个数组元素匹配。
预期结果是:
[{
actor: {
account: null,
degraded: false,
mbox: null,
mbox_sha1sum: "843c56da78f9eb888274d2d4e12ab1d748ec46234",
name: "name",
openid: null
},
capture: 'value'
},
{
actor: {
account: null,
degraded: false,
mbox: null,
mbox_sha1sum: "843c56da78f9eb888274d2d4e12ab1d748ec12345",
name: "name2",
openid: null
},
capture: 'value2'
}
];
答案 0 :(得分:3)
数组中的对象都是不同的对象,即使某些对象碰巧具有相同值的属性。 public static int indexOfMostRightSmallest(int[] a) {
return binaryLast(a, a[0]);
}
public static void main(String[] args) {
int[] a = { 5, 5, 5, 5, 5, 5, 5, 5, 6, 8, 9, 9, 10 };
System.out.println(indexOfMostRightSmallest(a));
}
函数正在比较引用,而不是属性值。
此外,实际上,三个对象中没有一个具有相同的属性,因为它们都具有不同的7
Stats: min=4, max=4, avg=4.0
值。
使用.findIndex()
代替<div class="list-group" style="height:50px">
<span href="#" class="list-group-item active">
Inbox
</span>
<div ng-repeat="record in inboxlist.Result">
<a class='list-group-item' ng-click="viewDates($index);">{{record.customer_name}}</a>
</div>
</div>
,以便您可以比较属性以查找匹配的对象:
.indexOf()
我只是使用.capture
属性,但当然您可以根据需要比较其他属性。
(请注意.indexOf()
是ES6函数,但我认为您的代码已经使用了箭头函数,这很好。或者您可以polyfill it。)
objects.filter((value, index, self) => {
return self.findIndex(v => v.actor.name === value.actor.name) === index;
})
&#13;