[英]Is there any way to findout the truth value in an if condition in Javascript?
[英]Is there any clean and better way of replacing object value based on condition in javascript
有沒有更好的方法可以使用普通的 javascript 或使用 lodash package。 感覺這段代碼有點丑,違反了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'
]
}
注意:這里只有一些“否”或“是”應該轉換為 boolean 值,所以我不能循環對象。
使用 object 解構也不起作用。
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
使用原始的 object 作為初始值,創建要轉換的鍵數組,然后對其進行縮減:
const booleanKeys = ['extraBed', 'accomodateChildren', 'allowPets', 'isPrepaymentRequired', 'provideDormitoryForDriver', 'GST'] const transform = obj => booleanKeys.reduce((acc, key) => ({...acc, [key]: obj[key] === 'Yes' }), obj) const obj = {"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"]} const result = transform(obj) console.log(result)
let result = Object.entries(inputObject)
.map(([k,v]) => [k,v === 'Yes'? true : v === 'No' ? false : v]);
console.log(result);
使用Object.entries() ,例如:
let obj = {
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'
]
};
Object.entries(obj).forEach(([k,v]) => {
if (v === 'Yes') {
obj[k] = true
} else if(v == 'No') {
obj[k] = false
}
});
console.log(obj);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.