如果它等于'',则将字符串变为FALSE

问题描述 投票:1回答:6

我的代码返回一个字符串:

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.

但还没有运气。

javascript
6个回答
5
投票

使用布尔AND运算符检查val.name是否也是真实的(空字符串是假的):

val && val.name ? val.name : "N/A"

5
投票

const val = {
  name: ''
}

const a = val && val.name || "N/A";

console.log(a)

2
投票
return (val || {}).name || 'N/A'

1
投票

我认为你需要的是对object上的属性的安全读取方法。您可以创建一个接收objectkey的方法,并安全地读取链接验证的属性。您可以使用的链接示例包括:

obj && obj.key ? obj.key : "N/A"

要么

(obj || {}).key || "N/A"

要么

obj && obj.key || "N/A"

在某些未来(我希望不会这么久)也许你可以使用下一个:

obj?.key || "N/A"

Reference

最后,通用安全读取方法的最小示例可以是:

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"));

0
投票

这可能会帮助你获得Idea你能做什么......

function getModify(string) {
    return (string=="")?('N/A'):(string);
}
console.log(getww(""));
console.log(getww("ub"));

// Output
// N/A
// ub

0
投票

return val.name!=“”? val.name:“N / A”;

© www.soinside.com 2019 - 2024. All rights reserved.