给定变量名的数组/列表,如果变量为null,则将所有变量名打印为字符串

时间:2018-08-03 13:22:08

标签: javascript jquery underscore.js

除了拥有许多if ... else函数并将变量名硬编码为字符串之外,还有什么简单的方法。 假设我们有10个可能包含或可能不包含某些值的变量。我希望能够返回所有这些为空的变量名称的列表。

代替:

if (x == null) return "x"

对于所有变量,有没有更好的方法可以做到这一点?寻找javascript / jquery或下划线方法。

3 个答案:

答案 0 :(得分:1)

您不可能一目了然地获取变量列表,因此您需要测试对象的属性。

这应该适用于对象。它需要所有键并通过isNUll对其进行过滤

console.log(_.filter(_.keys(object),(key)=>{
    return _.isNull(object[key]);
}));

您可以阅读更多有关获取当前范围变量的可能性(或非常不可能)的信息:Getting All Variables In Scope

答案 1 :(得分:1)

如果遵循注释中@Pointy的建议并使对象的变量属性生效,则可以执行以下操作:

const person = {
    firstName: "John",
    lastName: null,
    age: null
}

for(let prop in person) {
    if(person[prop] === null)  console.log(prop + ' is null');
}

如果您要检查一些全局声明的变量的值,它不会比多个ifs冗长得多,但会更加优雅:

['x', 'y', 'z'].map((propName) => {
    if(window[propName] === null || window[propName] === undefined) 
        console.log(prop + ' is not defined');
});

答案 2 :(得分:1)

您应该像这样维护变量x,y的对象(例如在ES6中)

var obj = {
  x,
  y
}

然后滤除null属性

Object.keys(obj).filter(k => obj[k] === null)

将返回一个空变量名称数组。