isEmpty
isEmpty
(collection: Collection | string) => boolean
Test if a collection or string is empty
isEmpty([]) // is true isEmpty([1]) // is false isEmpty('') // is true isEmpty('a') // is falseisEmpty([]) // is true isEmpty([1]) // is false isEmpty('') // is true isEmpty('a') // is falseisEmpty([]) // is true isEmpty([1]) // is false isEmpty('') // is true isEmpty('a') // is falseisEmpty([]) // is true isEmpty([1]) // is false isEmpty('') // is true isEmpty('a') // is falseUsually we can iterate over collections without worrying whether they contain elements. Sometimes, however, we need to treat empty collections differently. Below, we have appointments scheduled for the next couple of days. Let's display "None" for the days without any appointments.
const appointments = { Monday: [], Tuesday: [ { time: '8am-9:30', client: "Baz's Baby Furniture", }, { time: '11am-12', client: 'University Of Florida', }, ], } const displayOneAppt = ({ time, client }) => { return ` At: ${time}\n` + ` With: ${client}` } const displayDayAppts = (appts, day) => { if (isEmpty(appts)) return day + ': None' const dayAppts = appts.map(displayOneAppt).join('\n\n') return `${day}:\n` + dayAppts } const displayAllDayAppts = compose([ mapValues(displayDayAppts), joinValues('\n\n'), ]) const apptDisplay = displayAllDayAppts(appointments) console.log(apptDisplay) // prints // Monday: None // // Tuesday: // At: 8am-9:30 // With: Baz's Baby Furniture // // At: 11am-12 // With: University Of Floridatype Appointment = { time: string client: string } type Appointments = Record<string, Appointment[]> const appointments = { Monday: [], Tuesday: [ { time: '8am-9:30', client: "Baz's Baby Furniture", }, { time: '11am-12', client: 'University Of Florida', }, ], } const displayOneAppt = ({ time, client }: Appointment) => { return ` At: ${time}\n` + ` With: ${client}` } const displayDayAppts = (appts: Appointment[], day: string) => { if (isEmpty(appts)) return day + ': None' const dayAppts = appts.map(displayOneAppt).join('\n\n') return `${day}:\n` + dayAppts } const displayAllDayAppts = compose([ mapValues(displayDayAppts)<Appointments>, joinValues('\n\n'), ]) const apptDisplay = displayAllDayAppts(appointments) console.log(apptDisplay) // prints // Monday: None // // Tuesday: // At: 8am-9:30 // With: Baz's Baby Furniture // // At: 11am-12 // With: University Of Floridaconst appointments = { Monday: [], Tuesday: [ { time: '8am-9:30', client: "Baz's Baby Furniture", }, { time: '11am-12', client: 'University Of Florida', }, ], } const displayOneAppt = ({ time, client }) => { return ` At: ${time}\n` + ` With: ${client}` } const displayDayAppts = (appts, day) => { if (isEmpty(appts)) return day + ': None' const dayAppts = appts .map(displayOneAppt) .join('\n\n') return `${day}:\n` + dayAppts } const displayAllDayAppts = compose([ mapValues(displayDayAppts), joinValues('\n\n'), ]) const apptDisplay = displayAllDayAppts(appointments) console.log(apptDisplay) // prints // Monday: None // // Tuesday: // At: 8am-9:30 // With: Baz's Baby Furniture // // At: 11am-12 // With: University Of Floridatype Appointment = { time: string client: string } type Appointments = Record<string, Appointment[]> const appointments = { Monday: [], Tuesday: [ { time: '8am-9:30', client: "Baz's Baby Furniture", }, { time: '11am-12', client: 'University Of Florida', }, ], } const displayOneAppt = ({ time, client, }: Appointment) => { return ` At: ${time}\n` + ` With: ${client}` } const displayDayAppts = ( appts: Appointment[], day: string ) => { if (isEmpty(appts)) return day + ': None' const dayAppts = appts .map(displayOneAppt) .join('\n\n') return `${day}:\n` + dayAppts } const displayAllDayAppts = compose([ mapValues(displayDayAppts)<Appointments>, joinValues('\n\n'), ]) const apptDisplay = displayAllDayAppts(appointments) console.log(apptDisplay) // prints // Monday: None // // Tuesday: // At: 8am-9:30 // With: Baz's Baby Furniture // // At: 11am-12 // With: University Of Florida