function func(s, a, b) { if (s == '' || (a == '' && b == '')) return -1; for (var i = s.length; --i >= 0;) if (s[i] == a || s[i] == b) return i; }; console.log('func', func('aba', 'a', 'b')); console.log('func', func('aba', '', '')); console.log('func', func('aba', '', 'b')); console.log('func', func('aba', 'a', '')); function funcSrc(s, a, b) { var match_empty = /^$/; if (s.match(match_empty)) { return -1; } else { var i = s.length - 1; var aIndex = -1; var bIndex = -1; while ((aIndex == -1) && (bIndex == -1) && (i >= 0)) { if (s.substring(i, i + 1) == a) aIndex = i; if (s.substring(i, i + 1) == b) bIndex = i; i--; } if (aIndex != -1) { if (bIndex == -1) return aIndex; else return Math.max(aIndex, bIndex); } else { if (bIndex != -1) return bIndex; else return -1; } } }; console.log('funcSrc', funcSrc('aba', 'a', 'b')); console.log('funcSrc', funcSrc('aba', '', '')); console.log('funcSrc', funcSrc('aba', '', 'b')); console.log('funcSrc', funcSrc('aba', 'a', '')); function funcIndexOf(s, a, b) { return Math.max(s.indexOf(a), s.indexOf(b)); } console.log('funcIndexOf', funcIndexOf('aba', 'a', 'b')); console.log('funcIndexOf', funcIndexOf('aba', '', '')); console.log('funcIndexOf', funcIndexOf('aba', '', 'b')); console.log('funcIndexOf', funcIndexOf('aba', 'a', '')); function funcLastIndexOf(s, a, b) { return Math.max(s.lastIndexOf(a), s.lastIndexOf(b)); } console.log('funcLastIndexOf', funcLastIndexOf('aba', 'a', 'b')); console.log('funcLastIndexOf', funcLastIndexOf('aba', '', '')); console.log('funcLastIndexOf', funcLastIndexOf('aba', '', 'b')); console.log('funcLastIndexOf', funcLastIndexOf('aba', 'a', ''));
lastIndexOf()- Sergiks