Would it not be simpler to simply change the signature from `function(value, arrayOfStrings)` to `function(...values)`?
I'd also suggest that a better, more general purpose formulation of comparing a string against multiple values might be to use #match. Something like: ``` const checkString = (str, { ignoreCase, startsWith, endsWith, equals }={} ) => { const start = startsWith || equals ? '^' : ''; const end = endsWith || equals ? '$' : ''; const rx = v => new RegExp(`${start}${v}${end}`,ignoreCase && 'i'); return { against: (...values) => values.some(value => str.match(rx(value))) }; } ``` On Wed, 27 Jun 2018 at 11:50 Robert Wozniak <wozniakj.rob...@gmail.com> wrote: > Hi everyone, > > ignoreCase - JavaScript proposal > > It's a proposal to implement a new function to compare two strings but > without case sensitivity. > > The proposal is bringing an important function, which is being used in > Java. Many times in my career I had to compare two strings but ignore case > sensitivity. > > I had to convert it first and then I could compare. I'd like developers to > be able to use the function and compare two strings without worrying about > case sensitivity. > <https://github.com/robertjwozniak/ignoreCase#1-syntax>1. Syntax > > String.prototype.ignoreCase = function(value, arrayOfStrings) { > var secondOption = value.toLowerCase() || > arrayOfStrings.join(',').toLowerCase().split(','); > var firstOption = this.valueOf().toLowerCase(); > if(typeof secondOption === 'object') { > for(var i = 0, l = arrayOfStrings.length; i < l; i++) { > if(firstOption === secondOption[i]) { > return true; > break; > } > } > } else { > if(firstOption === secondOption) { > return true; > } else { > return false; > } > } > }; > > Above code presents *ignoreCase* function and what's happening inside. > > The function takes two parameters: > > (value, arrayOfStrings) > <https://github.com/robertjwozniak/ignoreCase#11-value-parameter>1.1 > "value" parameter > > The value parameter is the string which is going to be compared with the > parent string chosen by the developer, for example: > > const stringOne = "Matheus";stringOne.ignoreCase("matheus"); // true; > > <https://github.com/robertjwozniak/ignoreCase#12-arrayofstrings-paramenter>1.2 > "arrayOfStrings" parameter > > The "arrayOfStrings" parameter is an array of strings, which are going to > be compared with the parent string chosen by the developer. Once the parent > string equals one of the strings in an array, it will return true and stops > iterating through. > > Example: > > const stringOne = "Matheus";const manyStrings = ['robert', 'lucas', > 'matheus'];stringOne.ignoreCase('', manyStrings) // true; > > <https://github.com/robertjwozniak/ignoreCase#2-response>2. Response > > The function is going to return true or false. The result depends on > equality between chosen strings. > <https://github.com/robertjwozniak/ignoreCase#3-how-it-works>3. How does > it work? > > The function converts all of the strings, which the developer chose to the > lower case. After performing the previous operation, it compares all of > them. If at least one, equals the provided parent string, then the function > returns true. > > > You can the proposal on my GitHub: > https://github.com/robertjwozniak/ignoreCase > > > -- > Regards, > Robert Wozniak > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss