Javascript获得短路变量名称

时间:2019-07-03 18:37:32

标签: javascript short-circuiting

我正在像这样检查null

假设c为空。

if (a == null || b == null || c == null || d == null) { //short cirtcuit on the first null value (c)

    let grabNullKey = a == null || b == null || c == null || d == null;

    // I want this to grab the variable that is null, instead this logs `true`

    console.log(grabNullKey)

我想将变量名(c)登录到用户,是否有一个快捷方式来输出变量名而不是执行4条if语句?

3 个答案:

答案 0 :(得分:4)

首先是坏消息,JavaScript doesn't allow you to print a variable name as a string。好消息是有办法解决。

要能够打印变量名,您将需要使用一个对象而不是一系列变量。因此,您将需要一个像这样的对象:

const variableObject = { a: true, b: true, c: null, d: true };

要找到第一个null值并将其打印出来,您需要遍历它们的键并找到第一个null值:

const variableObject = { a: true, b: true, c: null, d: true };
const variableNames = Object.keys(variableObject); // ['a', 'b', 'c', 'd']
const firstNullVar = variableNames.find((key) => variablesObject[key] === null); // 'c'
console.log(firstNullVar); // will print the string 'c'

如果所有变量都不是null,则将打印undefined,尽管解决起来很容易。

答案 1 :(得分:1)

制作对象文字并将变量作为键/值对分配给对象。将对象作为参数传递给以下演示中演示的函数:

函数为null(对象)

function nulls(obj) {
  return (Object.keys(obj).filter(key => obj[key] === null)).join(', ');
}

@params对象[object]: 对象文字包含键(变量名abc,...)和值(变量值12,{ {1}},...)

  • null 返回键(变量名)的数组
  • Object.keys(object) 返回键(变量名称)的数组,其值(.filter(key => object[key] === null))为object[key]
  • null 将键(变量名)数组作为字符串返回

.join(', ')

答案 2 :(得分:0)

认为这可以做到:

var itemsA = ['a','b','c','d'];
var valsA = [a,b,c,d];
var ind = valsA.indexOf(null);
if(ind != -1){
 console.log(itemsA[ind]); 
}

您还可以通过使用带有find或findIndex的JSON对象来做类似的事情