Javascript 如何检查ES6语法内联对象中的null属性?
我有一个对象有五个属性,我只需要取其中的三个。对于其中一个属性,我需要检查它是否为空值,然后它应该为“未知”。 代码如下所示Javascript 如何检查ES6语法内联对象中的null属性?,javascript,Javascript,我有一个对象有五个属性,我只需要取其中的三个。对于其中一个属性,我需要检查它是否为空值,然后它应该为“未知”。 代码如下所示 let obj = { name:"john", lastName:"doe", age:24, city:null } function getSomeProperties(obj) { let newObj = { name: obj.name, age
let obj = {
name:"john",
lastName:"doe",
age:24,
city:null
}
function getSomeProperties(obj) {
let newObj = {
name: obj.name,
age:obj.age,
city:obj.city == null ? 'unknown' : obj.city
}
console.log(newObj);
}
getSomeProperties(obj);
如果我尝试只内联三个属性,那么这就行了
function getSomeProperties(obj) {
const newObj = (({name, age, city}) => ({name, age, city }))(obj);
console.log(newObj);
}
但问题是,当我尝试内联检查city是否为null时,就像第一种情况一样,我得到了错误
function getSomeProperties(obj) {
const newObj = (({name, age, city}) => ({name, age, city == null ? 'unknown' : city }))(obj);
console.log(newObj);
}
这个东西可以内联吗?您需要像这样检查它:
({name, age, city: city == null ? 'unknown' : city })
或者使用nullish合并运算符:
({name, age, city: city ?? 'unknown' })
与上述操作相同:
city: obj.city ?? 'unknown'
它检查左侧是否为null
或未定义
。如果是这种情况,则返回右侧的值
请记住0
或false
不被视为空值
在JavaScript中,空值是null
或未定义的值。空值总是错误的。newObj=({name,age,city})=>({name,age,city:city==null?'unknown':city}))(obj);