将JS属性设置为object或null

时间:2018-11-27 05:37:17

标签: javascript node.js

我有一个nodejs应用程序,该应用程序提供有关系统的数据,每个系统都有许多员工类型的联系人。

每当有人请求系统时,我都有一个脚本来填充与系统相关的员工。

我现在拥有的代码如下:

if(row.system_owner){ 
  row.system_owner=emps[(row.system_owner).toUpperCase()];
}
if(typeof(row.system_owner) !== 'object'){
  row.system_owner = null;
}

其中row是系统的实例,而emps是包含所有雇员的对象。这样做的原因是,最初,系统仅包含对雇员的引用,但是此处的引用被交换为整个雇员对象。

该代码很好用,但是我想知道是否有可能使它成为一个像这样的衬里,而跳过第二个IF statement

if(row.system_owner){ 
  row.system_owner=emps[(row.system_owner).toUpperCase()] ? Object 
  : null
}

2 个答案:

答案 0 :(得分:2)

您可以使用&&||运算符

b = {
  key: 'value'
}

a = undefined
res = a && b[a]
console.log(res) // undefined


a = 'key'
res = a && b[a]
console.log(res) // 'value'


//if you need null, you can use || operator

a = undefined
res = a && b[a] || null
console.log(res) // null

以您的情况

row.system_owner=row.system_owner && emps[(row.system_owner).toUpperCase()]

答案 1 :(得分:0)

您还可以尝试通过以下方式使用转头运算符:

if(row.system_owner){ 
  row.system_owner = typeof(row.system_owner) === 'object'
      ? emps[(row.system_owner).toUpperCase()]
      : null;
}

我可以想象这就是您要通过提案实现的目标。