> Indeed, Object.pick would be very promising, but it could indeed break
some codes!

Adding to *`Object`* (the function) is fine (usually, a survey would be
needed). For instance, `Object.values` was added in ES2017. It's adding to
*`Object.prototype`* that's impossible. Important distinction.

-- T.J. Crowder



*Farsight Software Ltd | 20-22 Wenlock Road, London N1 7GU | Company
#8393428 [email protected] <[email protected]>
| Direct: +44 (0)20 3627 4231 | Mobile: +44 (0)7717 842 414*
If you've received this message in error, please let us know by forwarding
it to [email protected] and then delete it from your system. Please
don't copy it or disclose its contents to anyone. Separately, note that
email sent over the internet without a digital signature may be modified en
route.

On Fri, Mar 17, 2017 at 12:53 PM, Felipe Nascimento de Moura <
[email protected]> wrote:

> Well...this is a major problem, then!
> Indeed, Object.pick would be very promising, but it could indeed break
> some codes!
>
> On Fri, Mar 17, 2017 at 9:48 AM, Michał Wadas <[email protected]>
> wrote:
>
>> It's impossible to add new methods on Object.prototype because it would
>> be web-breaking - I have seen code that test for typeof arr.map ===
>> 'function'
>>
>> On Set topic, I have written basic proposal for this
>> <https://github.com/Ginden/set-methods>, but it was ignored so I didn't
>> write formal spec.
>>
>> On 17/03/17 13:36, James Treworgy wrote:
>>
>> I think a good solution that doesn't require new syntax would be
>> map/filter methods on the Object prototype that return a new object, e.g.
>>
>> let subset = { a:1, b:2, c:3 }.filter(([key])=>['b'].includes(key))
>> // subset = { b: 2 }
>>
>> let subset = { 1:1, b:2, c:3 }.map(([key, value])=>[key, value * 2])
>> // subset = { a:2, b:4. c:6 }
>>
>> Actually I'd like this to be available on Map too. I've always thought it
>> was interesting that the Map and Set objects do not natively include
>> map/filter operations -- or maybe even most of the Array prototype methods
>> as applicable. And for Sets, basic set operations like
>> except/distinct/union.
>>
>> But a Javascript object is just a Map, really, or I guess one could say
>> that a Map is just an object with a few enhancements. It's surprising that
>> there is no native operation built in to directly convert between Maps and
>> objects given their conceptual similarity. In either case though it would
>> be nice to be able to apply standard processing rules that one applies to
>> Maps conceptually to an Object (and a Map) natively, like filter and map.
>>
>>
>>
>> On Fri, Mar 17, 2017 at 8:04 AM, Felipe Nascimento de Moura <
>> [email protected]> wrote:
>>
>>> Hi.
>>> Interesting to know that it has already been discussed.
>>>
>>> I know we could create a function to do similar things, but I think the
>>> language itself has evolved so well, this is a use case it could fit
>>> somehow.
>>>
>>> I think there could be different approaches for that, like
>>>
>>> Object.pick([ 'a', 'c' ], { a: 1, b: 2, c: 3 })
>>>
>>> or
>>>
>>> let x = {a, c}{ a: 1, b: 2, c: 3 }
>>>
>>> or
>>>
>>> let {a, c} as x = { a: 1, b: 2, c: 3 }
>>>
>>> or
>>>
>>>
>>> let x = { a: 1, b: 2, c: 3 }{a, c}
>>>
>>> or
>>>
>>> let x = { a: 1, b: 2, c: 3 }['a', 'c']
>>>
>>> Would you consider any of those as an interesting option?
>>>
>>> thanks.
>>>
>>>
>>>
>>> On Fri, Mar 17, 2017 at 7:25 AM, peter miller <[email protected]>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> There seems to be little appetite for taking it up, in spite of it being
>>>>> (IMHO) a very common use case.
>>>>>
>>>>
>>>> I'll second it being common in my code. My personal highlights would be
>>>> assigning to this:
>>>>
>>>> ```
>>>> this.{x,y,z} = a;
>>>> ```
>>>>
>>>> and combining it with property spreading:
>>>>
>>>> ```
>>>> const result = { a, b, ...x.{ y, z }, ...p.{ q, r } };
>>>> ```
>>>>
>>>> Peter
>>>>
>>>> --
>>>> "There were drawings, and sheets of paper with writing on them, and it
>>>> seemed that they were the sustenance of life, that here were the warlocks,
>>>> almost the vehicles of destruction of man's life, but at the same time the
>>>> very reason for his living." --- Maeve Gilmore/Titus Awakes.
>>>>
>>>> _______________________________________________
>>>> es-discuss mailing list
>>>> [email protected]
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>
>>>
>>>
>>>
>>> --
>>> [ ]s
>>>
>>> *--*
>>>
>>> *Felipe N. Moura*
>>> Web Developer, Google Developer Expert
>>> <https://developers.google.com/experts/people/felipe-moura>, Founder of
>>> BrazilJS <https://braziljs.org/> and Nasc <http://nasc.io/>.
>>>
>>> Website:  http://felipenmoura.com / http://nasc.io/
>>> Twitter:    @felipenmoura <http://twitter.com/felipenmoura>
>>> Facebook: http://fb.com/felipenmoura
>>> LinkedIn: http://goo.gl/qGmq
>>> ---------------------------------
>>> *Changing  the  world*  is the least I expect from  myself!
>>>
>>> _______________________________________________
>>> es-discuss mailing list
>>> [email protected]
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>>>
>>
>>
>> _______________________________________________
>> es-discuss mailing 
>> [email protected]https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
>
> --
> [ ]s
>
> *--*
>
> *Felipe N. Moura*
> Web Developer, Google Developer Expert
> <https://developers.google.com/experts/people/felipe-moura>, Founder of
> BrazilJS <https://braziljs.org/> and Nasc <http://nasc.io/>.
>
> Website:  http://felipenmoura.com / http://nasc.io/
> Twitter:    @felipenmoura <http://twitter.com/felipenmoura>
> Facebook: http://fb.com/felipenmoura
> LinkedIn: http://goo.gl/qGmq
> ---------------------------------
> *Changing  the  world*  is the least I expect from  myself!
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to