Javascript获取短路变量名

Javascript get short circuit variable name

我正在这样检查 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),有没有shorthand输出变量名而不是做4个if语句?

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

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

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

要找到第一个空值并打印它,您需要遍历它们的键并找到第一个为空的值:

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'

如果 none 个变量是 null,这将打印 undefined,尽管绕过它很容易。

认为这可以做到:

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 对象来做类似的事情

创建对象字面量并将变量作为 key/value 对分配给对象。将对象作为参数传递给以下演示中演示的函数:

函数空值(对象)

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

@params 对象[对象]: Object Literal由键(变量名,abc,...)和值(变量值,12null,...)

  • Object.keys(object) returns键数组(变量名)
  • .filter(key => object[key] === null) returns 具有值 (object[key]) 共 null
  • .join(', ') returns 键数组(变量名)作为字符串

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

let x = {
  a: 1,
  b: 2,
  c: null,
  d: 4,
  e: null,
  f: 6,
  g: null
};

console.log(nulls(x));