map不会改变原始数组;
map不会对空数组检测;
map 程序1:
构造一个函数,实现如下功能: toWeirdCase( "Weird string case" );=> returns "WeIrD StRiNg CaSe" function toWeirdCase(str){ return str.replace(/\w{1,2}/g,function(ele){ ele[0].toUpperCase()+slice(1); }); } 解析:str.match(/\w{1,2}/g) => ["We", "ir", "d", "st", "ri", "ng", "ca", "se"]; tips:为什么 不能用如下代码? callback 函数中 ele[0].toUpperCase()+ele[1]?? ele[1]有可能为undefined 而slice(1)在找不到的情况下返回“”map程序2:
//利用了map callback的第二个参数:function toWeirdCase(str){ return str.split(' ').map(function(ele){ return ele.split('').map(function(el,index){ return index%2 == 0 ? el.toUpperCase() : el.toLowerCase(); }).join(''); }).join(' '); }filter:
//把一个数组中的0转移到数组尾部,其余元素顺序不变。 var moveZero = function(arr){ return arr.filter(function(x){return x !== 0}).concat( arr.filter( function(x){ return x === 0; } )) }给一个整数数组,把奇数从小到大排序,偶数位置不动。
function sortArr(arr){ var oddArr = arr.filter(function(x){ return x%2; }).sort(function(a,b){ if(a<b){ return b; } }); return arr.map(function(x){ x%2 ? odd.shift() : x; //arr.shift()删除并返回第一个元素 }) }分析(())))是否配对
) => false
( => false
() => true
function validParentheses(parens){ //TODO var brr = parens.split('').map(function(x){ return x == '(' ? 1 : -1; }); if(brr[0] == -1){ return false; } var sum = 0; for(var i=0;i<brr.length;i++){ sum = sum + brr.shift(); i--; if(sum < 0){ return false; } } if(sum > 0){ return false; } return true; }改进版:(看了别人的代码感觉自己智商捉急了==)
function validParentheses(parens){ var n = 0; for (var i = 0; i < parens.length; i++) { if (parens[i] == '(') n++; if (parens[i] == ')') n--; if (n < 0) return false; } return n == 0; }返回数组中和word相同(含有同样数量的字母)的元素
function anagrams(word, words) { var temp = word.split('').sort().join(''); return words.filter(function(x){ return x.split('').sort().join('') == temp; }); }anagrams('abba', ['aabb', 'abcd', 'bbaa', 'dada']) => ['aabb', 'bbaa']anagrams('racer', ['crazer', 'carer', 'racar', 'caers', 'racer']) => ['carer', 'racer']anagrams('laser', ['lazing', 'lazy', 'lacer']) => []改进版(想法一样,聪明的我O(∩_∩)O):
String.prototype.sort = function() { return this.split("").sort().join(""); }; function anagrams(word, words) { return words.filter(function(x) { return x.sort() === word.sort(); }); }小算法:大于等于5的,反转
spinWords( "Hey fellow warriors" ) => returns "Hey wollef sroirraw" spinWords( "This is a test") => returns "This is a test" spinWords( "This is another test" )=> returns "This is rehtona test"
function spinWords(str){ var temp = ''; return str.split(' ').map(function(x){ return temp+x.length >= 5 ? x.split('').reverse().join('') : x; }).join(' '); }注意:reverse();是数组的方法正则版本:
function spinWords(str){ return str.replace(/\w{5,}/g,function(w){ return w.split('').reverse().join(''); }); } spinWords( "Hey fellow warriors"); "Hey wollef sroirraw"判断({[}])是否匹配
function fn(str){ while((/\(\)|\{\}|\[\]/g).test(str)){ str = str.replace(/\(\)|\{\}|\[\]/g,""); } return !str.length; }正则很强大了,夸!
转载于:https://www.cnblogs.com/liuxinxin4288/p/9042447.html