编程题汇总,持续更新
//去除字符串前后的空格 function trim(str) { if (str && typeof str === "string") { return str.replace(/(^\s*)|(\s*)$/g,""); //去除前后空白符 } } str1 = ' hello world '; console.log(trim(str1)); //hello world //调用原生js库trim()方法 console.log(str1.trim()); //hello world
// 统计字符串中字母个数或统计最多字母数 function strCount(str){ var obj = {}; for(var i=0;i<str.length;i++){ var v = str.charAt(i); if(obj[v] && obj[v].value == v){ // obj[v].count = ++ obj[v].count; ++ obj[v].count; }else{ obj[v] = {}; obj[v].value = v; obj[v].count = 1; } } return obj; } console.log(strCount("aaaabbbccccddfgh")); // { a: { value: 'a', count: 4 }, // b: { value: 'b', count: 3 }, // c: { value: 'c', count: 4 }, // d: { value: 'd', count: 2 }, // f: { value: 'f', count: 1 }, // g: { value: 'g', count: 1 }, // h: { value: 'h', count: 1 } }
// 去除数组里面重叠的元素 function unique(arr){ var newArr = []; for(var i=0,len=arr.length; i<len; i++){ if(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]); } } return newArr; } console.log(unique([1,2,2,2,3,3,3,4,5,6])); //[ 1, 2, 3, 4, 5, 6 ]
//判断是否是回文串 function isPalindrome(str) { str = str.replace(/\W/g, '').toLowerCase(); return (str == str.split('').reverse().join('')); } console.log(isPalindrome("level")); // logs 'true' console.log(isPalindrome("levels")); // logs 'false' console.log(isPalindrome("A car, a man, a maraca")); // logs 'true'
// 写一个sum函数使以下两种调用方式都正确。 // console.log(sum(2,3)); // Outputs 5 // console.log(sum(2)(3)); // Outputs 5 //方法1 function sum(x) { if (arguments.length == 2) { return arguments[0] + arguments[1]; } else { return function(y) { return x + y; }; } } //方法2 function sum(x, y) { if (y !== undefined) { return x + y; } else { return function(y) { return x + y; }; } }
//大数阶乘 //大整数阶乘的结果超出了导致js数值类型溢出,因此考虑用字符串保存结果来计算 function f(n) { var a = [1]; for (var i = 1; i <= n; i++) { for (var j = 0, c = 0; j < a.length || c != 0; j++) { var m = (j < a.length) ? (i * a[j] + c) : c; a[j] = m % 10; c = (m - a[j]) / 10; } } return a.reverse().join(""); } console.log(f(1000));