【发布时间】:2021-08-23 20:05:28
【问题描述】:
有没有更好的方法来使用纯 javascript 或使用 lodash 包来做到这一点。感觉这段代码有点丑,违反了DRY原则。
{
hotelName : 'abc',
starRating : '',
contactName : 'xyz',
phoneNumber : '917777777777',
address : 'my address',
city : 'a city',
placeForSearch : 'dnjwjn',
postalCode : '888888',
parking : 'No',
breakfast : 'Yes, Free',
facilities : [ 'Garden', 'Restaurant', 'Terrace' ],
extraBed : 'Yes',
noOfExtraBeds : '2',
freeCancellationAvailable : 'Day of arrival',
ifNotCancelledBeforeDate : 'of the first day',
checkIn : '00 : 00',
checkOut : '00 : 00',
accomodateChildren : 'No',
allowPets : 'No',
provideDormitoryForDriver : 'No',
isPrepaymentRequired : 'No',
GST : 'No',
tradeName : '',
GSTIN : '',
panCardNumber : '',
state : '',
mainPhoto : 'public/abc/1622985481065880430129042agra.jpeg',
photos : [
'public/abc/1622985481065286597229809mumbai.jpg',
'public/abc/1622985481066077551094770munnar.jpg',
'public/abc/1622985481066392466455226mysore.jpg'
]
}
注意:这里只有部分“否”或“是”应该转换为布尔值,所以我不能循环对象。
使用对象解构也不起作用。
fields.extraBed=fields.extraBed==="No"?false:true
fields.accomodateChildren=fields.accomodateChildren==="No"?false:true
fields.allowPets=fields.allowPets==="No"?false:true
fields.isPrepaymentRequired=fields.isPrepaymentRequired==="No"?false:true
fields.provideDormitoryForDriver=fields.provideDormitoryForDriver==="No"?false:true
fields.GST=fields.GST==="No"?false:true
【问题讨论】:
-
提示 - 任何时候你检查一个条件然后返回
true或false,你可以用条件替换,因为 that 也返回true或 @ 987654326@。最多,你必须否定它。x === "No"?false:true与x !== "No"相同。 -
你忘了
parking键 -
no @MisterJojo 我故意离开了,因为停车接受 3 个值之一(“No”、“Yes, Free”、“Yes, Paid”)
标签: javascript node.js json object