Path: csiph.com!.POSTED.208-71-239-109.cust.centrio.cz!not-for-mail From: Cezary Tomczyk Newsgroups: comp.lang.javascript Subject: Re: get set value in array of objects Date: Tue, 12 Jun 2018 17:36:38 +0200 Organization: csiph.com Internet News Service Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Tue, 12 Jun 2018 15:36:38 -0000 (UTC) Injection-Info: csiph.com; posting-host="208-71-239-109.cust.centrio.cz:109.239.71.208"; logging-data="36736"; mail-complaints-to="admin@kev009.com" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 In-Reply-To: Content-Language: en-US Xref: csiph.com comp.lang.javascript:35217 On 12/06/2018 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. > > Andrew Poulos Consider using Map: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map -- Cezary Tomczyk http://www.ctomczyk.pl/ https://www.aslint.org/