Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为非结构化对象中的空字符串提供默认值_Javascript_Object_Ecmascript 6 - Fatal编程技术网

Javascript 如何为非结构化对象中的空字符串提供默认值

Javascript 如何为非结构化对象中的空字符串提供默认值,javascript,object,ecmascript-6,Javascript,Object,Ecmascript 6,在执行对象分解时,如果密钥不存在(即undefinedKey),则可以提供默认值 如果(字符串)键确实存在,它不会被覆盖(即使为空) 我想知道在解构时是否可以为空字符串指定重写。在下面的示例中,我希望emptyKey打印Override for empty key const testObject={ emptyKey:“”, filledKey:“一些初始值”, }; 常数{ emptyKey='为空键重写', filledKey='已填充键的覆盖', undefinedKey='未定义键的

在执行对象分解时,如果密钥不存在(即undefinedKey),则可以提供默认值

如果(字符串)键确实存在,它不会被覆盖(即使为空)

我想知道在解构时是否可以为空字符串指定重写。在下面的示例中,我希望
emptyKey
打印
Override for empty key

const testObject={
emptyKey:“”,
filledKey:“一些初始值”,
};
常数{
emptyKey='为空键重写',
filledKey='已填充键的覆盖',
undefinedKey='未定义键的覆盖',
}=测试对象;
控制台日志(清空);/“”
console.log(filledKey);/'一些初始值'
console.log(unfinedkey);/'覆盖未定义的键“
我想知道在解构时是否可以为空字符串指定重写

否,仅当属性值为未定义时才会考虑默认值。无法覆盖此行为


作为一种解决方法,您可以构建自己的小型默认值处理程序,例如

功能默认值(obj、测试、默认值){
返回对象。键(默认值)。减少((acc,prop)=>{
acc[prop]=测试(obj[prop])?默认值[prop]:obj[prop];
返回acc;
}, {});
}
常量testObject={
emptyKey:“”,
filledKey:“一些初始值”,
};
常数{
emptyKey,
填充键,
不确定,
}=默认值(
testObject,
v=>v===未定义| | v==='',
{
emptyKey:“为空键重写”,
filledKey:“已填充键的覆盖”,
undefinedKey:'Override for undefined key',
}
);

console.log(emptyKey、filledKey、unfinedkey)为了在更大的函数中清晰起见,我正在尝试尽早定义默认值。我知道我可以在使用值的地方进行比较,但我希望有一种更干净的方法。好吧,这就是答案!非常感谢!