# Array.prototype.contains proposal

**URL:** <https://es.discourse.group/t/array-prototype-contains-proposal/1425>\
**Category:** 💡 Ideas\
**Tags:** proposal\
**Created:** [August 16, 2022, 8:30am UTC](https://es.discourse.group/t/array-prototype-contains-proposal/1425 "2022-08-16T08:30:03Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![c7x43t](https://yyz2.discourse-cdn.com/free1/user_avatar/es.discourse.group/c7x43t/32/1468_2.png) [@c7x43t](https://es.discourse.group/u/c7x43t)\
**Post date:** [August 16, 2022, 8:30am UTC](https://es.discourse.group/t/array-prototype-contains-proposal/1425/1 "2022-08-16T08:30:04Z")

</div>

I want to propose a function for the Array.prototype similar to Array.includes, which takes a function as an argument: Array.prototype.contains.  
Example implementation:

```javascript
function containsFilter(){
	return this.f.call(this.context,...arguments);
}
Object.defineProperty(Array.prototype,'contains',{
	...Object.getOwnPropertyDescriptor(Array.prototype,'filter'),
	value: function contains(f){
		let cf = containsFilter.bind({context:this,f});
		return this.filter(cf).length > 0;
	}
});
// Why?
function even(n){
    return n % 2 === 0;
}
[1,2,3,4,5].contains(even)
true
[1,1,3,5,5].contains(even)
false

```

---

<div class="post-metadata">

**Author:** ![aclaymore](https://yyz2.discourse-cdn.com/free1/user_avatar/es.discourse.group/aclaymore/32/501_2.png) [@aclaymore](https://es.discourse.group/u/aclaymore)\
**Post date:** [August 16, 2022, 12:06pm UTC](https://es.discourse.group/t/array-prototype-contains-proposal/1425/2 "2022-08-16T12:06:07Z")

</div>

I think you can use [Array.prototype.some() - JavaScript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some) for this

`[1,2,3].some(even); true`

---

<div class="post-metadata">

**Author:** ![senocular](https://yyz2.discourse-cdn.com/free1/user_avatar/es.discourse.group/senocular/32/642_2.png) [@senocular](https://es.discourse.group/u/senocular)\
**Post date:** [August 16, 2022, 12:45pm UTC](https://es.discourse.group/t/array-prototype-contains-proposal/1425/3 "2022-08-16T12:45:45Z")

</div>

Side note, `includes` was going to be `contains` but [contains couldn't be used](https://esdiscuss.org/topic/having-a-non-enumerable-array-prototype-contains-may-not-be-web-compatible).
