#javascript #arrays #reduce
Вопрос:
Я ищу, чтобы сопоставить один из моих объектов ответа с существующим массивом объектов, запустив два разных цикла, каким-то образом я не могу удалить значение, если соответствующий ключ не найден в объекте.
Есть ли какой-нибудь способ сделать значение равным нулю, если ключи не совпадают?
Я попытался следовать:
const data = {
test1: 1,
test2: 2
};
const val = [
{
id: 'test1',
val: 2222
},
{
id: 'test2',
val: 5555
},
{
id: 'test3',
val: 4444
}
];
val.forEach(element => {
Object.entries(data).forEach(([key, value]) => {
if (element.id === key) {
element.val = value;
}
});
});
console.log(val);
// output:
// const val = [
// {
// id: 'test1',
// val: 1
// },
// {
// id: 'test2',
// val: 2
// },
// {
// id: 'test3',
// val: ""
// }
// ];
Ответ №1:
Вам не нужна петля. Просто проверьте, существует ли это свойство.
const data = {
test1: 1,
test2: 2
};
const val = [{
id: 'test1',
val: 2222
},
{
id: 'test2',
val: 5555
},
{
id: 'test3',
val: 4444
}
];
val.forEach(element => {
if (data.hasOwnProperty(element.id)) {
element.val = data[element.id];
} else {
element.val = "";
}
});
console.log(val);