Mike Simon (2018-06-20T18:54:17.000Z)
True, there are many other ways to make this work. You could even use filter(function(f){f.name==‘abc’;}).length > 0 .

The focus of this proposal is that the purpose of .valueOf and .toString are to allow for objects to return a default value without requiring the matching method to know about the contents or property names of any of next. 

Array.prototype.some, and any method mentioned above require a that a content aware function be passed in to facilitate the match.  This proposal mitigates that, and allows Array.prototype.includes to evaluate the object as the object design was intended. 

> On Jun 20,  2018, at 11:33 AM, Andrea  <andrea.giammarchi at gmail.com> wrote:
> 
> It looks like you want included to use `==` for comparison, opening a whole new world of issues.
> 
> You have `some` and your code to do that with ease, same goes for `find` or `findIndex`, very appropriate for this use case.
> 
> ```js
> items.some(o => o == 'abc');
> ```
> 
> Regards
> 
>> On Wed, Jun 20, 2018 at 8:27 PM, Mike Simon <nixkuroi at gmail.com> wrote:
>> [Proposal] Array.prototype.includes should evaluate object.toString and/or object.valueOf when determining a match
>> 
>> The problem:  
>> 
>> If I have a list of objects that contain a toString() prototype that returns a value from the object, Array.prototype.includes does not return true if the value/string returned from the object is a match for the parameter value.
>> 
>> Test code:
>> 
>> var thingy = function(name) {this.name=name;};
>> thingy.prototype.valueOf = function(){return this.name};
>> thingy.prototype.toString = function(){return this.name};
>> var items = [new thingy('abc'),new thingy('def')];
>> var inc = items.includes('abc');
>> alert(items[0]); // alerts abc
>> alert(inc); // returns false
>> 
>> While it’s possible to create this as a list of strings using map, this would seem to conserve memory, as well as reduce the complexity of the code to perform this operation. 
>> 
>> Link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
>> 
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180620/de0f33dc/attachment.html>
nixkuroi at gmail.com (2018-06-20T18:57:16.050Z)
True, there are many other ways to make this work. You could even use filter(function(f){f.name==‘abc’;}).length > 0 .

The focus of this proposal is that the purpose of .valueOf and .toString are to allow for objects to return a default value without requiring the matching method to know about the contents or property names of any object. 

Array.prototype.some, and any method mentioned above, require a that a content aware function be passed in to facilitate the match.  This proposal mitigates that, and allows Array.prototype.includes to evaluate the object as the object design was intended.