Profile Lookup
函数将会检查通讯录中是否存在一个与传入的 firstName 相同的联系人。如果存在,那么还需要检查对应的联系人中是否存在 prop属性。
function lookUp(firstName, prop,contacts){
var temp = contacts.filter(function(item){
return item.firstName == firstName;
});
if(temp.length){
return temp[0][prop] ? temp[0][prop] : 'No such property';
}
return 'No such contact';
}
Generate Random Whole Numbers with JavaScript
随机生成一个1到10 的数字
function myFunction() {
return Math.floor(Math.random() * 10);
}
随机生成myMin到myMax的随机整数
function randomRange(myMin, myMax) {
return Math.floor(Math.random() * (myMax - myMin + 1)) + myMin; // 请修改这一行
}
Regular expressions
- 用全局、忽略大小写的模式选取字符串 testString中所有的单词 and:
/and/gi
- 用 \d 选择器来选取字符串中的所有数字:
/\d+/g
- 用 \s 选取句子中的所有空白字符:
/\s+/g
- 用 /\S/g 来匹配字符串testString中的所有非空白字符:
/\S/g
Reverse a String
翻转字符串
function reverseString(str) {
return str.split('').reverse().join('');
}
reverseString("hello");
Factorialize a Number
计算一个整数的阶乘
方法一
function factorialize(num) {
var newArr = [];
if(num === 0){
return 1;
}else{
for(var i=1;i <= num;i++){
newArr.push(i);
}
return newArr.reduce(function(prv,next){
return prv*next;
});
}
}
方法二
function factorialize(num){
if(num > 0){
return (num * factorialize(num - 1));
}else{
return 1;
}
}
方法三
// 此方法严格模式无法使用
function factorialize(num){
if (num > 0){
return (num * arguments.callee(num - 1));
}else{
return 1;
}
}
Check for Palindromes
检查回文字符串
function palindrome(str) {
var strTest = str.replace(/[\ |\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,"");
return strTest.toLowerCase() === strTest.toLowerCase().split('').reverse().join("")
}
Find the Longest Word in a String
找出最长单词,在句子中找出最长的单词,并返回它的长度。
方法一
function findLongestWord(str) {
return str.split(" ").reduce(function (prev,next) {
return next.length > prev.length ? next:prev;
}).length;
}
方法二
function findLongestWord(str) {
return str.split(" ").sort(function (a,b) {
return b.length - a.length;
})[0].length;
}
Title Case a Sentence
句中单词首字母大写,确保字符串的每个单词首字母都大写,其余部分小写。
方法一
function titleCase(str) {
var resStr = str.toLowerCase().split(" ");
for(var i=0; i<resStr.length; i++){
resStr[i] = resStr[i][0].toUpperCase() + resStr[i].substring(1,resStr[i].length);
}
return resStr.join(" ");
}
方法二
function titleCase(str) {
return str.toLowerCase().split(" ").map(function (item) {
return item[0].toString().toUpperCase() + item.slice(1);
}).join(" ");
}
Return Largest Numbers in Arrays
找出多个数组中的最大数
方法一
function largestOfFour(arr) {
var res = [];
arr.forEach(function(item){
res.push(item.reduce(function(prev,next){
return next>prev ? next:prev;
}));
});
return res;
}
方法二
function largestOfFour(arr) {
var res = [];
arr.forEach(function(item){
res.push(Math.max.apply(Math,item));
});
return res;
}
Confirm the Ending
检查字符串结尾,判断一个字符串(str)是否以指定的字符串(target)结尾。
方法一
function confirmEnding(str, target) {
var resStr = str.replace(/\s+/g,"");
return resStr.substr(resStr.length - target.length, resStr.length) === target;
}
方法二
function confirmEnding(str, target) {
var resStr = str.replace(/\s+/g,"");
return resStr.substr(-target.length) === target;
}
Repeat a string repeat a string
重复一个指定的字符串 num次,如果num是一个负数则返回一个空字符串。
function repeat(str, num) {
var resStr = "";
for(i = 1; i<=num; i++){
resStr+=str;
}
return resStr;
}
Truncate a string
截断字符串,如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。
function truncate(str, num) {
var resStr = '';
if(num <= 3){
resStr = str.slice(0,num) + "...";
}else {
resStr = num < str.length ? str.slice(0,num-3) + "...":str;
}
return resStr;
}
Chunky Monkey
猴子吃香蕉, 分割数组,把一个数组arr按照指定的数组大小size分割成若干个数组块。
function chunk(arr, size) {
var resArr = [];
for(var i=0; i<arr.length; i=i+size){
resArr.push(arr.slice(i,i+size));
}
return resArr;
}
Slasher Flick
截断数组,返回一个数组被截断n个元素后还剩余的元素,截断从索引0开始。
function slasher(arr, howMany) {
return arr.slice(howMany);
}
Mutations
比较字符串,如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。
function mutation(arr) {
var a = arr[1].split("").every(function (item) {
return arr[0].toLowerCase().indexOf(item.toLowerCase()) !== -1;
});
}
Falsy Bouncer
过滤数组假值,删除数组中的所有假值。在JavaScript中,假值有false、null、0、""、undefined 和 NaN。
function bouncer(arr) {
return arr.filter(function(item){
return item;
});
}
Seek and Destroy
摧毁数组,实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。
function destroyer(arr) {
var arg = [];
for(var i = 0; i < arguments.length; i++){
arg.push(arguments[i]);
}
return arr.filter(function (item) {
return arg.indexOf(item) < 0;
});
}
Where do I belong
数组排序并找出元素索引,先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。
function where(arr, num) {
return arr.concat(num).sort(function (a,b) {
return a - b;
}).indexOf(num);
}
Caesars Cipher
凯撒密码,移位密码也就是密码中的字母会按照指定的数量来做移位。
function rot13(str) {
var res = [];
var regEn = /[\ |\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g;
str.split("").forEach(function (item) {
if(!regEn.test(item)){
itemCode = item.charCodeAt(0)+13;
if(itemCode > 90){
itemCode = item.charCodeAt(0)+13-26;
}
item = String.fromCharCode(itemCode);
}
res.push(item);
});
return res.join().replace(/,/g,'');
}