我找到了这个家庭作业问题的解决方案,但我觉得这不是解决这个问题的最有效的方法。对我应该探索的其他解决方案感兴趣。
问:编写一个名为allEqual的函数,如果字符串中的每个字符都相同,则该函数返回true
示例:
如果你通过"aaa“它应该返回true如果你通过"aba”它应该返回false */
我的代码
var stringAE = "aba";
function allEqual(string) {
var stringAENew = "";
for (var i = 0; i < string.length; i++) {
if (string[0] === string[i]) {
stringAENew += string[i];
console.log(stringAENew)
}
}
return stringAENew === string;
}
allEqual(stringAE) 发布于 2016-12-17 06:00:38
使用.every()的简单解决方案。
function allEqual(input) {
return input.split('').every(char => char === input[0]);
}
console.log(allEqual('aba')); // false
console.log(allEqual('aaa')); // true
console.log(allEqual('')); // true
发布于 2016-12-17 05:50:51
也可以使用正则表达式完成
function allEqual(str) {
return /^(.)\1*$/.test(str);
}虽然可能不是那么有效。
发布于 2016-12-17 06:15:06
此ES6解决方案还适用于在第一个平面中具有Unicode代码点的字符串(https://en.wikipedia.org/wiki/Plane_(Unicode%29),即代码超出16位范围:
function allEqual(string) {
return [...string].every( (x, _, a) => x === a[0]);
}
console.log(allEqual('aaaa')); // true
console.log(allEqual('aaaba')); // false
// Next one fails in solutions that don't support multi-plane unicode:
console.log(allEqual('???')); // true
console.log(allEqual('')); // true
https://stackoverflow.com/questions/41192854
复制相似问题