大话前端Web前端之路让前端飞

JS中的map/reduce方法

2017-08-25  本文已影响27人  fenerchen

廖老师的官网,关于这两种方法的使用写的通俗易懂,现在就直接上例子了。

例:字符串转数字。

     条件:1、不能用JS内置的parseInt()函数和Number。
                2、仅使用map和reduce操作。
     测试:输入‘1890’;输出1890;
//实现代码
    function tonumber(x){
      var str='0123456789';
      x=str.indexOf(x);
      return x;
}
 function string2int(s) {  
    var len=s.length;
    var arr=[];
    for(var i=0;i<len;i++){ arr.push(s[i]);} 
    var num=arr.map(tonumber);  
    return num.reduce(function (x, y) { return x * 10 + y; });   
}
//测试
alert( string2int('132'));
alert( typepf string2int('132'))
//输出
123
number

注意

数组arr调用map方法后,并没有改变arr本身 arr中的元素仍然为string,因此该例中重新定义了一个num存放修改类型后的值。

例:把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。

function toUpper(word){
  return word[0].toUpperCase()+word.substring(1).toLowerCase();
}
function normalize(arr) {
var after=arr.map(toUpper);
 return after;
}
//测试
alert(normalize(['adam', 'LISA', 'barT']))
//输出:['Adam', 'Lisa', 'Bart']

注意

字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果.
var s = 'adam';
s[0] = s[0].toUpperCase();
alert(s); // s仍然为'adam'

上一篇 下一篇

猜你喜欢

热点阅读