Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Ben Bacarisse Newsgroups: comp.lang.javascript Subject: Re: function to get frequencies of a char array Date: Sat, 24 Jan 2015 14:29:17 +0000 Organization: A noiseless patient Spider Lines: 28 Message-ID: <87twzgl0aq.fsf@bsb.me.uk> References: <26839541.MRbOrngyXZ@PointedEars.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: mx02.eternal-september.org; posting-host="017616aa25f81ec581c44d76d61ba2f3"; logging-data="14531"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Uc1/CQ0g8y6+cqhrTbYgZUqv0D9+Vw6E=" Cancel-Lock: sha1:n+3XFQITVGk2KiVdqhIrGW5glhU= sha1:yV8Tans9Qr0C8mpmqeCWD+kVDIc= X-BSB-Auth: 1.7a74d85b499b1f9fa127.20150124142917GMT.87twzgl0aq.fsf@bsb.me.uk Xref: csiph.com comp.lang.javascript:26687 Thomas 'PointedEars' Lahn writes: > While this works – but I would use “Object.create(null)” instead of “{}” to > avoid name collisions –, I find a “for” or “for–in” statement more obvious > and compatible: > > var counts = {}; > > for (var i = 0, len = a.length; i < len; ++i) > { > /* NOTE: hasOwnProperty() may be required */ > var e = a[i]; > e ? ++counts[e] : (counts[e] = 1); > } I think you meant counts[e] ? ++counts[e] : (counts[e] = 1); here (and immediately below): > for (var i in a) > { > /* NOTE: hasOwnProperty() may be required */ > var e = a[i]; > e ? ++counts[e] : (counts[e] = 1); > } -- Ben.