问题描述
const ex = [
{
name: 'John',sender: "12345678",receiver: {
name: "simi",age: 20,city: "New York"
},time: 12:30 am
},{
name: 'Jane',sender: {
name: "simi",receiver: "12345678",time: 1:00 pm
}
]
在此数组中,第一个对象中的发送者属性值等于第二个对象中的接收者属性值。 有没有一种方法可以检查并仅产生此值的一次出现,即仅存在该值的一个对象
解决方法
尝试一下:
const ex = [
{
name: 'John',sender: "12345678",receiver: {
name: "simi",age: 20,city: "New York"
},time: "12:30 am"
},{
name: 'Jane',sender: {
name: "simi",receiver: "12345678",time: "1:00 pm"
}
]
let map = {}
ex.forEach(e => {
let obj = null;
if(e.sender instanceof Object)
obj = e.sender;
else if(e.receiver instanceof Object)
obj = e.receiver;
if(!obj) return;
let key = obj.name+obj.age+obj.city;
if(!map[key])
map[key] = e;
});
console.log(Object.values(map));