Truthy & Falsy in Javascript
Truthy & Falsy in Javascript
我正试图创建一个名为onlyTruthy的函数,该函数接受一个对象,循环遍历其所有属性,并删除任何错误的属性。然后返回传入的对象。
下面的代码一直失败,我不确定我做错了什么。。
var onlyTruthy = function(someObject){
for(var property in someObject){
if(someObject[property] == "false"){
delete someObject.property;
}
}
return someObject;
};
这里有两个主要问题:
-
if(someObject[property] == "false"
正在检查属性是否实际上是字符串"false"
。这不是进行布尔检查或检查falsey
值。 -
删除特性时,必须执行以下操作:
delete someObject[property]
,而不是delete someObject.property
。您一直在尝试删除一个名为"property"
的属性,而不是变量property
的实际值。
我建议您将代码更改为:
var onlyTruthy = function(someObject){
for(var property in someObject){
if(!someObject[property]){
delete someObject[property];
}
}
return someObject;
};
仅供参考,您的if (someObject[property] == "false")
正在检查属性是否为字符串"false"
。这根本不是一个布尔检查。
并且,您必须将delete someObject.property
更改为delete someObject[property]
。
至于真与假。在Javascript中,很多值都是假的:
undefined
null
NaN
false
'' (empty string)
0
-0
0n (BigInt(0))
因此,您不希望通过比较if (x == false)
来检查是否存在虚假。你只想做:
if (!x)
查看该值是否为false。
下面是一个工作片段:
var someObject = {"name":"ernest","age":50,"funky":false,"foo":"bar","foo2":""};
var onlyTruthy = function(obj){
for(var property in obj){
if(!someObject[property]){
delete obj[property];
}
}
return obj;
};
document.write(JSON.stringify(onlyTruthy(someObject)));
相关文章:
- Node.js's Buffer.writeFloatBE in Javascript
- write HTML in JavaScript
- SetTimeout and clearTimeout in Javascript
- TicTacToe minimax AI in Javascript
- Calculation in javascript
- "a" element in JavaScript
- Truthy & Falsy in Javascript
- How can I get and replace this in javascript ( jquery?
- Output in Javascript
- Eventlistener in javascript to jQuery
- Escaping/Unescaping html in javascript?
- {} + [] in Javascript
- document.getElementbyId in Javascript
- SharePoint 2010 SP.FileCreationInformation() in javascript c
- url in javascript
- Detect Mountain Lion (OS X 10.8) in javascript?
- document Object in JavaScript
- Error with this.id in Javascript
- DEC2Bin in JavaScript?
- drawImage in JavaScript (Canvas)