#javascript #arrays #javascript-objects
#javascript #массивы #javascript-объекты
Вопрос:
У меня есть массив, подобный этому
const ex = [
{
name: 'John',
sender: "12345678",
receiver: {
name: "simi",
age: 20,
city: "New York"
},
time: 12:30 am
},
{
name: 'Jane',
sender: {
name: "simi",
age: 20,
city: "New York"
},
receiver: "12345678",
time: 1:00 pm
}
]
В этом массиве значение свойства отправителя в первом объекте равно значению свойства получателя во втором объекте.
Есть ли способ, которым я могу проверить и создать только одно вхождение этого значения, то есть только один объект, в котором присутствует значение
Комментарии:
1. что означает это значение значение объекта или значение свойства?
2. значение свойства.
Ответ №1:
Попробуйте это:
const ex = [
{
name: 'John',
sender: "12345678",
receiver: {
name: "simi",
age: 20,
city: "New York"
},
time: "12:30 am"
},
{
name: 'Jane',
sender: {
name: "simi",
age: 20,
city: "New York"
},
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));
Комментарии:
1. Спасибо за ваш ответ, что, если я все еще хочу иметь его в массиве. Допустим, есть возможность иметь несколько подобных сценариев
2. @SimiloluwaOdeyemi
Object.values(map)
— это еще один массив, содержащий новые уникальные элементы.