Js基础(二)

二、  字符串

1.字符串用''""括起来的字符表示,字符串内含有“ ” ‘ ’ 的使用转义符 \ ;

2.多行字符串用`….`来表示,+号连接,${name}模板字符串,直接用在字符串中代替为name的属性的值;

字符串操作:

[javascript]  view plain  copy
  1. var s = 'Hello';  
  2. s.length;   //字符串s的长度  
  3. s[0];    // 返回 'H' ,要获取字符串某个指定位置的字符,使用类似Array的下标操作,索引号从0开始:  
  4. s[1];    // 返回 'e '  
  5. s[2];    // 返回 'l'  
  6. s[3];    // 返回 'l'  
  7. s[13];   // undefined 超出范围的索引不会报错,但一律返回undefined  
  8. s.toUpperCase();     // 返回'HELLO'转换为大写的  
  9. s.toLowerCase();     // 返回'hello'转换为小写的  
  10. str.indexOf('ll');   // 返回2 在字符串中找到其出现的位置,没有找到指定的子串,返回-1  
  11. s.substring(0, 5);   // 从索引0开始到5(不包括5),返回'Hello'  
  12. s.substring(x);      // 从索引x开始到结束  
字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但也没有任何效果;JavaScript为字符串提供了一些常用方法,调用这些方法本身不会改变原有字符串的内容,而是返回一个新字符串。

三、数组

1.Array提供了一种顺序存储一组元素的功能,并可以按索引来读写。

2.JavaScript的数组可以包括任意数据类型;字符串是不可变的,但是数组是可变的,可以通过索引号来改变;

(1)创建数组,在JavaScript中有两种方法创建数组:

[javascript]  view plain  copy
  1. var arr = [1, 2, 3.14, 'Hello'nulltrue];   //创建数组  
  2. var arr = new Array(1,2,3);                    //创建数组  
  3. arr.length;                 //获取数组长度,就是数组有几个元素  
  4. arr.length = 2;             //给length赋值会改变数组的长度,变为arr={1,2}索引只有0,1  
  5. arr[1] = 99;                //索引为1处改变,arr数组变为(1,99,3),而字符串就不行了       
  6. arr[5] = 'x';               // arr变为[1, 2, 3, undefined, undefined, 'x'],不会报错的,不建议这样做。  

(2)indexOf()搜索一个指定的元素的位置,与String类似,返回它的索引,没找到返回-1:

[javascript]  view plain  copy
  1. var arr = ['A','B''10',20];   //'10'是一个字符串了  
  2. arr.indexOf('A');               // 元素A的索引为0  
  3. arr.indexOf('B');               // 元素B的索引为1  
  4. arr.indexOf(10);                // 元素10没有找到,返回-1  

(3)slice()截取Array的部分元素,就是对应String的substring()版本,然后返回一个新的Array:

[javascript]  view plain  copy
  1. var arr =['a','b','c','d','e'];  
  2. arr.slice(0, 3);         // 从索引0开始,到索引3结束,但不包括索引3: ['a', 'b', 'c']  
  3. arr.slice(3);            // 从索引3开始到结束: ['d', 'e'],不给slice()任何参数,它就从头到尾截取所有元素;  

(4)push()向Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉:

[javascript]  view plain  copy
  1. arr.push('A''B');             // 直接向array的数组中末尾添加,返回数组长度  
  2. arr.pop();                      //从数组的后面删除一个元素,返回被删除的元素  
  3. arr.pop();                      // 删除到没有元素后空数组继续pop不会报错,而是返回undefined  

(5)unshift()往Array的头部添加若干元素,shift()方法则把Array的第一个元素删掉;

[javascript]  view plain  copy
  1. arr.unshift('A''B');          //在数组头部添加,返回数组长度  
  2. arr.shift();                    //在数组头部删除一个元素,返回被删除的数  
  3. arr.shift();                    // 空数组继续shift不会报错,而是返回undefined  

(6)sort()可以对当前Array进行排序,直接调用时,按照默认顺序排序;reverse()把整个Array的元素给掉个个,也就是反转;

[javascript]  view plain  copy
  1. var arr = ['B''C''A'];  
  2. arr.sort();       // ['A', 'B', 'C']  
  3. arr.reverse();    //['C','B','A']  

(7)splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素;

[javascript]  view plain  copy
  1. var arr = [1, 2, 3, 4, 5, 6];        
  2. arr.splice(2, 3, 'a''b');        // 从索引2开始删除3个元素,然后再添加两个元素[1, 2, 'a', 'b', 6]  
  3. arr.splice(2, 2);                  // 从索引2开始删除2个元素,返回被删除元素 一个数组  
  4. arr.splice(2, 0, 'c''d');        // 从索引2开始删除0个元素,返回[],因为没有删除任何元素  

(8)concat()方法把当前的Array和另一个Array连接起来,并返回一个新的Array(只有截取和连接时是返回一个新的数组的)

[javascript]  view plain  copy
  1. var arr = ['A''B''C'];  
  2. var add = arr.concat([1, 2, 3]);   //arr后添加上一个数组后为['A', 'B', 'C', 1, 2, 3];返回了一个新的数组add   
  3. arr.concat(1, 2, [3, 4]);          //所有的都连起来返回一个新的数组['A', 'B', 'C', 1, 2, 3, 4]  

(9)join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串;

[javascript]  view plain  copy
  1. var arr =['A','B','C',1,2,3];  
  2. var s = arr.join('-');  
  3. alert(s);             //输出  A-B-C-1-2-3  

(10)first(),last()获取第一个和最后一个元素

[javascript]  view plain  copy
  1. var arr = [2, 4, 6, 8];  
  2. var a = _.first(arr,2); //从数组arr头部开始截取2个元素  2,4  
  3. var b = _.last(arr,2);    //从数组arr的尾部开始结局2个元素 6,8  
  4. alert(a);  

(11)flatten()嵌套多少个数组最后返回的都是一个数组

[javascript]  view plain  copy
  1. var a = _.flatten([1, [2], [3, [[4], [5]]]]);   // a=[1, 2, 3, 4, 5]  

(12)zip()把多个数组按索引组成新的数组,unzip()反过来(_有时候会显示未定义可能是浏览器问题,有事后又是可以运行的)

[javascript]  view plain  copy
  1. var names = ['小明''小红''小白'];  
  2. var scores = [85, 92, 59];  
  3. var nas= _.zip(names, scores);            // 返回一个数组  [['小明', 85], ['小红', 92], ['小白', 59]]  
  4. _.unzip(nas);                             // [['小明', '小红', '小白'], [85, 92, 59]]<span style="font-size:14px;"></span>  

(13)object(),替代zip(),把两个数组按照索引组成一个对象;

[javascript]  view plain  copy
  1. _.zip(names, scores);               // [['小明', 85], ['小红', 92], ['小白', 59]]            
  2. _.object(names, scores);            // {'小明': 85, '小红': 92, '小白': 59}  

(14)range()快速生成一个数组

[javascript]  view plain  copy
  1. _.range(10); // 从0开始小于10,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
  2. _.range(1, 11); // 从1开始小于11,[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
  3. _.range(0, 30, 5); //从0开始小于30,步长5, [0, 5, 10, 15, 20, 25]  
  4. _.range(0, -10, -1); // 从0开始大于-10,步长-1,[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]  

四、对象

JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成,用于描述现实世界中的某个对象.

[javascript]  view plain  copy
  1. var duixiang ={  
  2. name:'李四',  
  3. birth:1999,  
  4. birthday:'1999.9.9',  
  5. 'middle-school''No.1 Middle School'  
  6. }                                      //对象中有点 . 用用‘’扩起来  
  7. duixiang.name;                         //李四  
  8. duixiang['middle-school'];             //在对象中时加了‘’所以要这样才能访问  
  9. duixiang.qqq="hehe";                //添加  
  10. delete duixiang.birth;              //可以直接的增加删除                                   
  11. duixiang.hasOwnProperty('name');       //判断是否拥有这个属性true  
  12. duixiang.hasOwnProperty('birth');      // false  

五、条件和循环

条件判断:if(){} else {} 或者if(){} else if (){} else {}
循环:for()      while() do...while()

[javascript]  view plain  copy
  1. var a =[1,2,3]  
  2. for (var key in a) {  
  3.     alert(key); // 依次输出他的索引  
  4. }  
  5. for (var key of a){  
  6.     alert(key); // 依次输出它的值  
  7. }  
  8. var b = {  
  9.      name:'maomao',  
  10.      'y-m-d':'2014.9'  
  11. }  
  12. for (var key in b){  
  13.     alert(key);// 依次输出对象的key,就是属性名;  
  14. }  
  15. for (var key of b){  
  16.     alert(key);// 不可用因为object是不可迭代的  
  17. }  
  18. //for key of xxx 可以用在array ,map ,set ;  

六、map和set,iterable(可迭代的)


JavaScript的对象有个小问题,就是键必须是字符串。

Map是一组键值对的结构,具有极快的查找速度。

[javascript]  view plain  copy
  1. var m = new Map([['李四', 95], ['张三', 85], ['毛毛', 75]]);  
  2. m.get('毛毛');       // 85  
  3. m.set('小二', 65);   //添加新的key-value  
  4. m.set('呵呵', 66);  
  5. m.has('小二');       //判断是否存在key '小二': true  
  6. m.get('呵呵');       // 66  
  7. m.delete('小二');    //删除key '小二'  

set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key(重复的会被过滤掉)。

[javascript]  view plain  copy
  1. var s1 = new Set([1, 2, 3]); // 含1, 2, 3  
  2.   
  3. var s = new Set();  
  4. s.add("Thomas Jefferson");//增加元素  
  5. s.add(1776);  
  6. s.add("founding father");  
  7. s.delete(1776);  
  8. s.forEach(function (item) {      //对集合中每个元素进行操作  
  9.     document.write(item.toString() + ", ");  
  10. });  

for ... of循环,只循环集合本身的元素:

[javascript]  view plain  copy
  1. var a = ['A''B''C'];  
  2. a.name = 'Hello';  
  3. for (var x of a) {  
  4.     alert(x); // 'A', 'B', 'C'  没有hello的;  
  5. }  
  6. //但是使用forEach()更方便  
  7. a.forEach(function (element, index, array) {  
  8.     // element: 指向当前元素的值  
  9.     // index: 指向当前索引  
  10.     // array: 指向Array对象本身,如果是set则写成set  
  11.     alert(element);  
  12. });  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值