cool...I like this approach too!
A little bit verbose, but looks to be more powerful for other operations we
haven't event figured out yet.
It would give developers a new set of possibilities and tools.
I still think that a syntax similar to one of those I suggested would be
very helpful, in addition to it, though.
We could have both.
As in:
let x, y
x = obj.x
y = obj.y
we now can
let {x, y} = obj
We would be able to use:
let subset = { a:1, b:2, c:3 }.filter(([key])=>['b'].includes(key))
or
let { b } as subset = { a:1, b:2, c:3 }
On Fri, Mar 17, 2017 at 9:36 AM, James Treworgy <[email protected]> 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
>>
>>
>
--
[ ]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