廖老师的官网,关于这两种方法的使用写的通俗易懂,现在就直接上例子了。
例:字符串转数字。
条件: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'
网友评论