Path: csiph.com!feeder.erje.net!1.eu.feeder.erje.net!weretis.net!feeder4.news.weretis.net!feeder5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: "Christoph M. Becker" Newsgroups: comp.lang.javascript Subject: Re: get set value in array of objects Date: Tue, 12 Jun 2018 17:12:02 +0200 Organization: solani.org Lines: 47 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: solani.org 1528816319 16382 127.0.0.43 (12 Jun 2018 15:11:59 GMT) X-Complaints-To: abuse@news.solani.org NNTP-Posting-Date: Tue, 12 Jun 2018 15:11:59 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 In-Reply-To: Content-Language: de-DE X-User-ID: eJwFwQkBACAIA8BMPBsQBxX6R/AORuENJ+hY7ENeruCJlXQfHWpMzLiozZ4yVEJbI6P35gceLBES Cancel-Lock: sha1:LsKmktz0++YDVpNNCih0M8hOGVU= Xref: csiph.com comp.lang.javascript:35216 On 12.06.2018 at 02:50, Andrew Poulos wrote: > Say I have an array like this > > var objArray = [ >     { id:0, name:'Jonah',   otherProp:321 }, >     { id:1, name:'Andrew',  otherProp:648 }, >     { id:2, name:'Another', otherProp:850 }, >     { id:3, name:'Quite',   otherProp:146 }, >     { id:4, name:'Mary',    otherProp:984 } > ]; > > except that the objects have many more properties and the array has many > more elements. > > > To get, say the 'name' value for the object with an id = 3 I'm using: > > var val = objArray.find(function(obj) { >   return (obj.id === 3 ? obj.name : false); > }); > > > And to set the 'name' value for the object with an id = 3 I'm using: > > var ind = objArray.findIndex(function(obj) { >   return obj.id === 3; > }); > > objArray[ind]['name'] = "Fred"; > > > It works but I'm wondering if someone could show a "better" way. If you're doing the lookup mostly by ID, consider to use some kind of map instead. For the given example you could even do: objArray[3].name to get the name, and objArray[3].name = "Fred" to set it. -- Christoph M. Becker