例如,我们有这种数据
08-31 15:18:05.500: E/tinyWRAP(21323): ***ERROR: function: "tsip_header_Date_parse()"
08-31 15:18:05.500: E/tinyWRAP(21323): file: "src/headers/tsip_header_Date.c"
08-31 15:18:05.500: E/tinyWRAP(21323): line: "387"
08-31 15:18:05.500: E/tinyWRAP(21323): MSG: Failed to parse 'Date' header.
我想测试每个信息。对我来说,下面的代码看起来很简单
user = {
name : 'Scott',
info : {
age : 25,
addr1 : 'A',
addr2 : 'B',
zipCode : 60000
}
}
这是很多代码。重构它的最佳方法是什么?
答案 0 :(得分:1)
创建要检查的道具列表,并通过_.every():
运行它们var props = ['age', 'addr1', 'addr2', 'zipCode'];
if(typeof user === "object" && _.every(props, function(prop) { return _.has(user.info, prop); })) {
console.log('whatever you want to do');
}
如果您需要检查对象中的更多子道具,可以这样做:
user = {
name : 'Scott',
moreInfo: { // another sub section of props
gender: 'm'
},
info : {
age : 25,
addr1 : 'A',
addr2 : 'B',
zipCode : 60000
}
}
var props = ['info.age', 'info.addr1', 'info.addr2', 'info.zipCode', 'moreInfo.gender'];
if(_.every(props, function(prop) { return _.has(user, prop); })) {
console.log('whatever you want to do');
}
答案 1 :(得分:0)
您可以使用difference()和keys():
var props = [ 'age', 'addr1', 'addr2', 'zipCode' ];
if (!_.difference(props, _.keys(user.info)).length) {
// Has required properties...
}