字符串类型,数组类型,对象类型(详讲)
字符串
- 正常字符串我们使用 单引号,或者双引号包裹
- 注意转义字符\
1 2 3 4 5
| \' 代表字符串 \n 换行 \t tab \u4e2d \u### Unicode字符 \x41 Ascll字符
|
- 多行字符串编写
1 2 3 4 5 6
| var msg= 'hello world 你好ya 你好'
|
- 模板字符串 (掌握es6的新特性)
1 2 3 4 5 6 7
| let name = "xm"; let age=3; let msg= '你好呀,${name}' console.log(msg) 你好呀,${name}
|
- 字符串长度
- 字符串的不可变性(掌握)
1 2 3 4 5 6
| console.log(student[0]) s student[0]=1 1 console.log(student) student
|
- 大小写转换
1 2 3 4 5
| student.toUpperCase() "STUDENT" student.toLowerCase() "student"
|
- 获取指定的下标
1 2 3 4
| console.log(student.indexOf('t')) 1 console.log(student.indexOf('s')) 0
|
- substring(掌握)
1 2 3 4 5
| [) student.substring(1) //从第一个字符串截取到最后一个字符串 "tudent" student.substring(1,3) //[1,3) "tu"
|
数组
Array 可以包含任意的数据类型
1 2 3
| var arr = [1,2,3,4,5,6] //通过下标取值和赋值 arr[0] arr[0] =1;
|
- 长度
注意:假如给arr.length,数组大小就会发生变化。如果赋值过小,元素就会丢失。
- indexOf,通过元素获得下标索引
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。
字符串的”1”和数字1是不同的
3. slice() 截取Array的一部分,返回一个新数组,类似于String中的substring
- push,pop 尾部(掌握)
1 2 3 4
| push: 压入到尾部 pop: 弹出尾部的一个元素 arr.push(1,2,"a") arr.pop()
|
- unshift(),shift()头部 (掌握)
1 2
| unshift 压入到头部 shift 弹出头部的一个元素
|
- 排序 sort()
1 2 3 4
| arr (3) ["B", "C", "A"] arr.sort() (3) ["A", "B", "C"]
|
- 元素反转 reverse()
1 2 3
| (3) ["A", "B", "C"] arr.reverse() (3) ["C", "B", "A"]
|
- concat() (掌握)
1 2 3 4 5
| (3) ["C", "B", "A"] arr.concat([1,2,3]) (6) ["C", "B", "A", 1, 2, 3] arr (3) ["C", "B", "A"]
|
注意: concat()并没有修改数组,只是会返回一个新的数组
- 连接符join
打印拼接数组,使用特定的字符串连接
1 2 3
| (3) ["C", "B", "A"] arr.join('-') "C-B-A"
|
- 多维数组
1 2 3
| arr= [[1,2],[3,4],["5","6"]]; arr[1][1] 4
|
总结: 数组:存储数据(如何存,如何取,方法都可以自己实现!)
对象
是若干个键值对
Js中所有的键都是字符串,值是任意对象!
1 2 3 4 5 6 7 8 9 10 11 12
| var 对象名={ 属性名: 属性值; 属性名: 属性值; 属性名: 属性值; }
var student={ name :"zhangsan", age:10, email: "24132413241@qq.com", score: 0 }
|
Js中对象,{…}表示一个对象,键值对描述属性xxxx:xxxx,多个属性之间使用逗号隔开,最后一个属性不加逗号!
- 对象赋值
1 2 3 4 5 6
| student.name "zhangsan" student.name="lishi" "lishi" student.name "lishi"
|
- 使用一个不存在的对象属性,不会报错! undefined
- 动态的删减属性,通过delete删除对象的属性
1 2
| delete student.name true
|
- 动态添加,直接给新属性添加值即可
1 2
| student.haha= "haha" "haha"
|
- 判断属性值是否在这个对象中! xx in xxx!
1 2 3 4 5
| 'age' in student true
'toString' in student true
|
- 判断一个属性是否是这个对象自身拥有的hasOwnProperty()
1 2 3 4
| student.hasOwnProperty('toString') false student.hasOwnProperty('age') true
|
流程控制
- if判断 else
- while循环 ,避免程序死循环
- for循环
- forEach循环(5.1引入的)
1 2 3 4 5
| var age=[12,3,12,3,12,3,31,23,123]
age.forEach(function(value){ console.log(value) })
|
- for…in(age 不知道是数组大小的情况用)
1 2 3 4 5 6 7
| //for(var index in object){} for (var num in age) { if (age.hasOwnProperty(num)) { console.log('存在'); console.log(age[num]); } }
|
Map和Set (ES6的新特性)
Map:
1 2 3 4 5 6 7 8 9 10 11 12 13
| //ES6 Map //学生的成绩,学生的名字 // var names =["tom","jack","haha"] ; // var scores= [100,90,80]; var map = new Map([ ['tom', 100], ['jack', 90], ['haha', 80], ]); var name = map.get('tom'); map.set('admin', 1223456); //添加 console.log(name); //通过Key获得value map.delete('tom');//删除
|
Set:无序不重复的集合
1 2 3 4
| var set = new Set([1, 3, 1, 1, 1]); set.add(2); set.delete(1); console.log(set.has(3));
|
iterator(es6新特性)
遍历数组
1 2 3 4
| var arr = [3, 4, 5]; for (let x of arr) { console.log(x); }
|
遍历map
1 2 3 4 5 6 7 8
| var map = new Map([ ['tom', 100], ['jack', 90], ['haha', 70], ]); for (let x of map) { console.log(x); }
|
遍历set
1 2 3 4
| var set = new Set([5, 6, 7]); for (let x of set) { console.log(x); }
|
参考链接