十二、Mutations 确认数组第二个字符串所有字符是否都在第一个串中出现
思路:
1、循环第二个串每个字符检查是否在第一个串中出现
代码如下:
function mutation(arr) {
var len = arr[1].length,
a = arr[0].toLowerCase(),
b = arr[1].toLowerCase();
for(var i=0;i<len;i++){
if(a.indexOf(b.charAt(i))<0){
return false;
}
}
return true;
}
mutation(["hello", "hey"]);
十三、Falsy Bouncer 把数组中所有false, null, 0, "", undefined, 和 NaN值元素去掉
思路:
用Array.prototype.filter()把值过滤掉
代码如下:
function bouncer(arr) {
// Don't show a false ID to this bouncer.
return arr.filter(function(value){
return (value!==false && value!==null && value!==undefined && value!==0 && value!=='') && !(typeof value === 'number' && value.toString() === 'NaN');
});
}
bouncer([7, "ate", "", false, 9]);
十四、Seek and Destroy 过滤数组中指定值的元素
思路:
1、同上
代码如下:
function destroyer() {
var len = arguments.length,
arr = arguments[0],
tArr = arguments;
// Remove all the values
return arr.filter(function(value){
for(var i=1;i<tArr.length;i++){
if(value === tArr[i]){
return false;
}
}
return true;
});
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
十五、Where do I belong 查找指定值在数组中的插入位置
思路:
1、把值与数组中所有元素进行比较得出位置值
代码如下:
function getIndexToIns(arr, num) {
// Find my place in this sorted array.
var len = arr.length,
r = 0;
for(var i=0;i<len;i++){ if(num>arr[i]){
r++;
}
}
return r;
}
getIndexToIns([40, 60], 50);
十六、Caesars Cipher 凯撒加密
思路:
1、直接循环串中所有字符如果是英文字母就加13超出90(z)则回到65(5)开始
代码如下:
function rot13(str) { // LBH QVQ VG!
var len = str.length,
rStr = '';
for(var i=0;i<len;i++){ var n = str.charCodeAt(i), c = str.charAt(i); if(n >64 && n<91){
if(n+13<91){
c = String.fromCharCode(n+13);
}else{
c = String.fromCharCode(64+n+13-90);
}
}
rStr+=c;
}
return rStr;
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");