Faits : A. A._, née en 1957, a travaillé depuis le 2 septembre 1996 au service de la société B._ SA. A la suite de la fusion de cette société avec la société C._ SA, son contrat de travail a été repris par celle-ci à partir du 1 er juillet 2008. Le 24 novembre 2016, elle a requis l'octroi d'indemnités de chômage à compter du 1 er février 2016 ( recte : 2017) en indiquant avoir été licenciée par son employeur le 24 octobre 2016 avec effet au 31 janvier 2017 en raison de sa "mise en préretraite". Dans une attestation du 6 février 2017, l'employeur a indiqué avoir lui-même résilié les rapports de travail pour "préretraite". Par courriel du 8 février suivant, l'assurée a informé la Caisse de chômage UNIA (ci-après: UNIA) qu'elle avait accepté de bénéficier d'une retraite anticipée sur proposition de son employeur, en raison de la reprise de la société C._ SA par la société D._ SA. Par décision du 10 avril 2017, confirmée sur opposition le 18 mai suivant, UNIA a nié le droit de l'assurée à une indemnité de chômage au motif que l'intéressée ne justifiait d'aucune période de cotisation à compter du 1 er février 2017, date de sa mise à la retraite anticipée. B. Saisie d'un recours contre la décision sur opposition, la Chambre des assurances sociales de la Cour de justice de la République et canton de Genève l'a rejeté par jugement du 29 novembre 2017. C. A._ forme un recours en matière de droit public en demandant l'annulation de ce jugement et de la décision sur opposition de UNIA du 18 mai 2017 et en concluant à l'octroi des prestations de l'assurance-chômage à compter du 1 er février 2017. Subsidiairement, elle demande le renvoi de la cause à la cour cantonale pour nouveau jugement, le tout sous suite de frais et dépens. L'intimée, la juridiction cantonale et le Secrétariat d'Etat à l'économie ont renoncé à présenter des déterminations.