Array.prototype.find2 = function find2(fn) {
for(const x of this) {
if (fn(x)) {
return x
}
}
}
Array.prototype.filter2 = function filter2(fn) {
const result = []
for(const x of this) {
if (fn(x)) {
result.push(x)
}
}
return result
}
const array = [1,2,3,4]
const result1 = array.find2(x => x > 2)
console.log(`find: ${result1}`)
const result2 = array.filter(x => x > 2)
console.log(`filtered: ${result2}`)
QXJyYXkucHJvdG90eXBlLmZpbmQyID0gZnVuY3Rpb24gZmluZDIoZm4pIHsKICBmb3IoY29uc3QgeCBvZiB0aGlzKSB7CiAgICBpZiAoZm4oeCkpIHsKICAgICAgcmV0dXJuIHgKICAgIH0KICB9Cn0KCkFycmF5LnByb3RvdHlwZS5maWx0ZXIyID0gZnVuY3Rpb24gZmlsdGVyMihmbikgewogIGNvbnN0IHJlc3VsdCA9IFtdCiAgZm9yKGNvbnN0IHggb2YgdGhpcykgewogICAgaWYgKGZuKHgpKSB7CiAgICAgIHJlc3VsdC5wdXNoKHgpCiAgICB9CiAgfQogIHJldHVybiByZXN1bHQKfQoKCmNvbnN0IGFycmF5ID0gWzEsMiwzLDRdCmNvbnN0IHJlc3VsdDEgPSBhcnJheS5maW5kMih4ID0+IHggPiAyKQpjb25zb2xlLmxvZyhgZmluZDogJHtyZXN1bHQxfWApCgpjb25zdCByZXN1bHQyID0gYXJyYXkuZmlsdGVyKHggPT4geCA+IDIpCmNvbnNvbGUubG9nKGBmaWx0ZXJlZDogJHtyZXN1bHQyfWApCg==