我的代码返回一个字符串:
return val ? val.name : "N/A";
但如果val.name
返回“”,它应该返回“N / A”,而不是val.name
。怎么做?
我试过了
return val ? val.name === "" : "N/A";
return val.name ? val.name : "N/A";
etc.
但还没有运气。
使用布尔AND运算符检查val.name
是否也是真实的(空字符串是假的):
val && val.name ? val.name : "N/A"
const val = {
name: ''
}
const a = val && val.name || "N/A";
console.log(a)
return (val || {}).name || 'N/A'
我认为你需要的是对object
上的属性的安全读取方法。您可以创建一个接收object
和key
的方法,并安全地读取链接验证的属性。您可以使用的链接示例包括:
obj && obj.key ? obj.key : "N/A"
要么
(obj || {}).key || "N/A"
要么
obj && obj.key || "N/A"
在某些未来(我希望不会这么久)也许你可以使用下一个:
obj?.key || "N/A"
最后,通用安全读取方法的最小示例可以是:
let obj1 = null;
let obj2 = {};
let obj3 = {name: ""}
let obj4 = {name: "John"}
const safeReadObj = (obj, key) => obj && obj[key] || "N/A";
// Test cases:
console.log(safeReadObj(obj1, "name"));
console.log(safeReadObj(obj2, "name"));
console.log(safeReadObj(obj3, "name"));
console.log(safeReadObj(obj4, "name"));
这可能会帮助你获得Idea你能做什么......
function getModify(string) {
return (string=="")?('N/A'):(string);
}
console.log(getww(""));
console.log(getww("ub"));
// Output
// N/A
// ub
return val.name!=“”? val.name:“N / A”;