创建与请求.body相关的JSON对象



使用NodeJs+Express创建 REST API。一切正常,但我无法理解如何遍历request.body并检查其字段的undefinedempty值,并仅使用有效数据分配新对象。

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也从其他Objectinherits,则它可能还会具有额外的属性,如果您不希望包含它们,则应将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 (||) 变量赋值解释

最新更新