除了拥有许多if ... else函数并将变量名硬编码为字符串之外,还有什么简单的方法。 假设我们有10个可能包含或可能不包含某些值的变量。我希望能够返回所有这些为空的变量名称的列表。
代替:
if (x == null) return "x"
对于所有变量,有没有更好的方法可以做到这一点?寻找javascript / jquery或下划线方法。
答案 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)
将返回一个空变量名称数组。