Javascript空字符串vs(null和未定义)
我有一个目标Javascript空字符串vs(null和未定义),javascript,Javascript,我有一个目标 var data = {1:undefined,2:null,3:10,4:""} 我想用0替换所有未定义和空值。我正在使用以下代码来执行此操作: for (var index in data) { if (!data[index]) { data[index] = 0; } } 我期望的结果是:{1:0,2:0,3:10:4::} 但结果是:{1:0,2:0,3:10:4:0},因为它将空字符串视为null。这是已知的行为吗 我可以用电脑检查一
var data = {1:undefined,2:null,3:10,4:""}
我想用0替换所有未定义和空值。我正在使用以下代码来执行此操作:
for (var index in data) {
if (!data[index]) {
data[index] = 0;
}
}
我期望的结果是:{1:0,2:0,3:10:4::}
但结果是:{1:0,2:0,3:10:4:0}
,因为它将空字符串视为null。这是已知的行为吗
我可以用电脑检查一下
(如果(数据[索引]==未定义| |数据[索引]==空))
但是我想知道上述解决方案的行为。您可以添加
typeof data[index]!='字符串“
var data={1:undefined,2:null,3:10,4:“”
for(数据中的var索引){
如果(!data[index]&&typeof data[index]!='string'){
数据[索引]=0;
}
}
console.log(数据)
您可以添加数据类型[索引]!='字符串“
var data={1:undefined,2:null,3:10,4:“”
for(数据中的var索引){
如果(!data[index]&&typeof data[index]!='string'){
数据[索引]=0;
}
}
console.log(数据)
尝试:
if((typeof==“未定义”)||
( == "" ) ) {
= 0 ;
}
顺便问一下,您是否使用“1”、“2”索引?试试:
if((typeof==“未定义”)||
( == "" ) ) {
= 0 ;
}
顺便问一下,您是否使用了“1”、“2”索引?这是因为长度为0的字符串是“falsy”,这意味着如果将其作为布尔值计算,将转换为
false
。阅读更多关于“falsy”的内容。您可以通过以下方式修复代码:
for (var index in data) {
if (typeof data[index] == "undefined" || data[index] == null) {
data[index] = 0;
}
}
这是因为长度为0的字符串是“falsy”,这意味着如果将其计算为布尔值,将转换为
false
。阅读更多关于“falsy”的内容。您可以通过以下方式修复代码:
for (var index in data) {
if (typeof data[index] == "undefined" || data[index] == null) {
data[index] = 0;
}
}
.undefined不是问题,而是空字符串..undefined不是问题,而是空字符串。感谢@Michaël提供有用的链接。感谢@Michaël提供有用的链接。