今天认真看了一下网络上廖雪峰大大的javascript教程,对其中的一些知识进行了学习,个人感觉廖大的教程是比较适合我的,有详细的讲解,也有精心设计的练习题。。。MD再次证明我的理科思维智商堪忧。不过我相信勤能补拙!笨鸟先飞,只要努力了至少天才1个小时能做到的我多花10倍时间能做到就好……
记录一下今天遇到的廖大的几个题目并且做一些笔记
1. 字符串相关
字符串操作函数:
toUppercase
toUppercase()
函数可以将一个字符串中的字符转换成大写:
var str = 'hello'; str.toUppercase();//返回'HELLO'
toLowercase
toLowercase
函数可以将一个字符串中的字符转换成小写:
var str = 'HELLO'; str.toLowercase();//返回'hello'
indexOf
indexOf
函数可以搜索指定字符串出现的位置:
var str = 'hello,world'; str.indexOf('world');//返回7,若是没有搜索到则返回-1
substring
substring
函数可以指定索引区间的子串:
var str = 'hello,world'; str.substring(1,3);//返回'el'(不包括3) str.substring(3);//返回'lo,world',从3开始到结束
2. 数组相关
数组相关操作情况比较复杂,这里借用了很多廖大的例子
数组操作函数:
indexOf
indexOf
函数搜索一个指定的元素的位置:
var arr = [1,2,3,4,5,6,7,8,9]; arr.indexOf(3);//返回2
slice
slice
函数可以切割字符串:
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C'] arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G']
push和pop
push()
向Array的末尾添加若干元素,pop()
则把Array的最后一个元素删除掉:
var arr = [1, 2]; arr.push('A', 'B'); // 返回Array新的长度: 4 arr; // [1, 2, 'A', 'B'] arr.pop(); // pop()返回'B' arr; // [1, 2, 'A'] arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次 arr; // [] arr.pop(); // 空数组继续pop不会报错,而是返回undefined arr; // []
unshift和shift
如果要往Array的头部添加若干元素,使用unshift()
方法,shift()
方法则把Array的第一个元素删掉:
var arr = [1, 2]; arr.unshift('A', 'B'); // 返回Array新的长度: 4 arr; // ['A', 'B', 1, 2] arr.shift(); // 'A' arr; // ['B', 1, 2] arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次 arr; // [] arr.shift(); // 空数组继续shift不会报错,而是返回undefined arr; // []
关于数组的操作先记录到这儿,将来多用到了相关函数应该能记住的
3.有趣的问题
廖大的一道题目(第二题)很有意思,让我卡住很久,在这儿记录一下
练习:不要使用JavaScript内置的parseInt()
函数,利用map和reduce操作实现一个string2int()
函数:
这个问题廖大已经给出了详细的思路,但是我没有做出来的是如何将string类型的字符转换成number类型的,原因是我不知道javascript的弱类型转换,今后记住了javascript的弱类型转换方法:
var x = str-0; x = x*1;//以上均可将类型进行转换
关于廖大的问题,我写的内容是:
'use strict'; function string2int(s) { var arr1 = []; for(var i = 0; i<s.length;i++){ arr1.push(s[i] - 0); }; return arr1.reduce( function (x, y) { return x * 10 + y;}; )} // 测试: if (string2int('0') === 0 && string2int('12345') === 12345 && string2int('12300') === 12300) { if (string2int.toString().indexOf('parseInt') !== -1) { alert('请勿使用parseInt()!'); } else if (string2int.toString().indexOf('Number') !== -1) { alert('请勿使用Number()!'); } else { alert('测试通过!'); } } else { alert('测试失败!'); }
当然这样的写法虽然通过了测试,但是并不简便,在廖大网站下方看到有很多的高人写出的答案简直让我羡慕的无法自拔,不过目前我自身的水平只能到这儿,能够解决问题就算成功吧….