Деструктуризация и значения по умолчанию
Есть объект,
const order = {
name,
description : 'Description',
cost : 5,
currency : '',
"company manufacturer" : 'Open source',
"production date" : 'Today' };
В функции showInfo, принимающий объект для деструктуризации, необходимо вывести информацию о объекте, заполнив пустые поля значениями по умолчанию, а также создать функцию валидации в замыкании, которая будет проверять поля на пустоту и значение поля cost на целочисленность и неотрицательность
function showInfo(obj) {
Object.keys(obj).map(k => obj[k] = typeof obj[k] == 'string' ? obj[k].trim() : obj[k]);
let {name = 'Program', description : desc = 'Program calculator', cost, currency : curr = 'Rub', 'company manufacturer' : creator = 'I', 'production date' : date = 'Yesterday'} = obj;
return function() {
Object.entries(obj).forEach(([key, value]) => {
if (value.length == 0 && key !== 'cost') {
console.log(`Key ${key} will get value by default`)
}
});
if (typeof (obj['cost']) !== 'number' || Math.sign(obj['cost']) !== 1) {
cost = 1;
console.log(`Invalid cost, will set value by default`);
}
return [name, desc, cost, curr, creator, date];
}
}
Несмотря на то, что поля name и currency пусты, значения по умолчанию в деструктуризации им не присваиваются. Хотя функция в замыкании выводит сообщение о том, что они пусты.
В чем причина такой ошибки? Заранее благодарю