使用NodeJs
+Express
创建 REST API。一切正常,但我无法理解如何遍历request.body
并检查其字段的undefined
和empty
值,并仅使用有效数据分配新对象。
request.body看起来像:
{
key: 'value',
otherKey: 'otherValue',
oneMoreKey: '',
oneMoreKey2: undefined,
oneMoreKey3: null
}
在这一点上,我的对象看起来像:
let contactData = Object.assign({},{
'key': 'value',
'otherKey': 'otherValue'
})
寻求您的建议和帮助
JavaScript
function getCleanObject(oldObject) {
var newObject = {};
for (var property in oldObject) {
var value = oldObject[property];
if (value) newObject[property] = value;
}
}
解释
您可以从创建新的干净Object
开始
var newObject = {}; // same as new Object();
然后使用for loop
循环访问对象的所有属性。
for (var property in oldObject)
然后获取该属性的值
var value = oldObject[property];
如果值Troothy
则将属性添加到新Object
if (value) newObject[property] = value;
请注意,这样false
值将被拒绝。要允许将其复制到新Object
应将if
语句替换为
if(value || value === false)
此外,如果您要复制的Object
也从其他Object
inherits
,则它可能还会具有额外的属性,如果您不希望包含它们,则应将if
语句更改为
if(value && oldObject.hasOwnProperty(value))
记住for(var item in object)
!=for(var item of list)
in
用于循环访问对象的属性,而of
用于循环访问iteratable
(即列表)。此外,所有浏览器都支持in
,而internet explorer
不支持of
。
your_object = {
key: request.body[key] || 'default',
otherKey: request.body[otherKey] || 'default',
oneMoreKey: request.body[oneMoreKey] || 'default'
...
}
关于 or (||) 如何工作的解释 JavaScript OR (||) 变量赋值解释