这不是问题,只是个人的好奇心。
我发现了一个奇怪的边缘情况,我不知道我的大脑是否搞砸了,或者JavaScript是否缺乏这个。从返回也可以为null的字符串列的SQL-Query中,我想将它们放入数组中。但是,当字符串为空时,我希望这些数组为空。
如果我执行以下操作,则数组将包含 null 作为条目,而不是保持为空:
// Column A and B can be either a String or null
var sqlColumnA = sqlResults[i][1];
var sqlColumnB = sqlResults[i][2];
// Store them within arrays of an objects ONLY IF they are a String
var obj = {
a : [sqLColumnA],
b : [sqlColumnB]
};
为了绕过这个,我必须使用这样的三元运算符:
sqlColumnA === null ? [sqlColumnA] : []
显然它有效,但它让我思考。 JavaScript中有 Nothing 之类的东西吗?变量不仅仅是null,而是字面上的空?或者我不能绕过三元运算符解决方案?
答案 0 :(得分:1)
如果你想要一个实际的空(如零长度)数组,你需要根据你的问题使用三元运算符(或类似的语法)。没有办法避免它。
实际上,javascript至少有两种方式来定义"不存在" - Both null
and undefined
。
答案 1 :(得分:1)
另一种方法可能是在数组上使用.filter(Boolean)
来消除所有虚假值(null
,undefined
,''
,NaN
, 0
和空白)
var arr = [null, 1, 2, 3, '', undefined, 'a', NaN,,, 0, 'b', {}];
console.log(arr.filter(Boolean));
答案 2 :(得分:0)
变量可以是undefined。
答案 3 :(得分:0)
是的,有一个'没有',它被称为undefined
。
var empty;
console.log(empty);
输出:undefined
。
答案 4 :(得分:0)
您可以使用不是null
或不'null'
的值作为字符串。
console.log([null, 'null', '', 'value'].map(v => v !== null && v !== 'null' ? [v] : []));