一.字符串String 类
## 1.定义字符串的方法
` var st=new String(“hello world”) `
###简写
var st=“hello world”
1.字符串的加号运算 + 仅仅就是拼接 这种方法 叫字符串拼接
2.字符串prototype上的方法
1.charAt()返回指定位置的字符 var s=st.charAt(2)
2.concat()链接两个或多个字符串,并返回新的 var
3.index Of()返回某个字符串在字符中首次出现的位置,没有就是-1
4.lastIndex Of() 功能和indexOf一样 不过是从后往前
5.match()
6.Search()
7.Replace()
8.slice()截取字符串的一部分
var st = "hello world"
var sd = st.slice(2,7)
console.log(sd)
9.splice()将字符串按某种形式分割成数组
10.substr()也是截取和slice()有点区别
11.substring() 跟slice一样
12. toLowerCase() 将字符串的中字符都变成小写
13. toUpperCase() 将字符串中的字符都变成大写
14. trim() 去掉字符串两端的空白
二.数组.Array
var arr=new Array(“12”,zhangsan)
简写
var arr=【12,“张三”】
数组的基本方法:
1.push()在数组结尾添加一个新元素,返回值是数组长度
var arr = [a,b,c,d]
arr.push(e)
console.log(arr)
2.unshift() 在数组开头添加一个元素返回是数组长度
3.pop()删除数组最后一个元素,返回是删除那个元素
4.shift()删除数组第一个元素,返回是删除那个元素
5.slice()截取数组一部分,并返回新的数组。对原来数组没有影响
var arr = [a,b,c]
arr.slice(1,3)
console.log(arr)
6.splice()在数组中添加或删除元素
7.sort() 给数组中的元素排序
8.reverse() 反转数组中元素的顺序
9.toString() 将数组转换成字符串格式的数组,并返回结果
10.concat()合并多个数组,并返回它的值
var st = [a,b,c]
var sd = [d,e]
var ss = sd.concat(st)
console.log(ss)
11.indexOf()检索数组中元素,并返回它所在位置,没有就是-1
12.jion()将数组所有元素转成一个字符串
//数组去重
var arr=[12,45,12,23,12,23];
var ass=[];
for(var i=0;i<arr.length;i++){
if(ass.indexOf(arr[i])==-1){
ass.push(arr[i])
}
}
三.字符串与数组的转化
要求将字符串倒序
```
var str = "feng,tao,tao" //
console.log(str.length)//12
console.log(typeof str)//string
```
var b = str.split(',')// 用分隔符split(',')方法将字符串转化为数组,并且以里面的参数符号为分隔符
```
console.log(b.length)//3
console.log(b instanceof Array)//true
console.log(b)// ["feng", "tao", "tao"]
var c = b.reverse()
console.log(c)//["tao", "tao", "feng"]
```
var d = c.join(".")//用join('.')方法将数组转化为字符串,并且以里面的参数符号为分隔符
console.log(d) //tao.tao.feng
console.log(typeof d)//string
四,伪数组
1 它也是对象,伪数组一般具有以下特点:
按索引方式存储数据;
具有length属性;
没有数组的push、shift、pop等方法
伪数组是一个 Object,而真实的数组是一个 Array
2常见的伪数组有:
函数内部的 arguments
用 getElementsByTagName 获得的元素集合(NodeList)
jQuery 对象(比如 $(“div”) )
自定义的某些对象
3将伪数组转化为数组
伪数组可以转换为真正数组条件:1.伪数组的键值需要为数字,否则转换后数组均无初始值2.有length属性
方法一 使用Array.prototype.slice.call() 或 [].slice.call()
Array.prototype.slice.call()可以理解为:改变数组的slice方法的作用域,在特定作用域中去调用slice方法,call()方法的第二个参数表示传递给slice的参数即截取数组的起始位置,默认为0
var obj = { //伪数组
0: 'a',
1: "b",
length: 2
}
console.log(obj.length) //2
console.log(typeof obj) //object
console.log(obj instanceof Array) //false
var arr = Array.prototype.slice.call(obj)
console.log(arr.length) //2
console.log(typeof arr) //object
console.log(arr instanceof Array) //true
console.log(arr) //["a", "b"]
```
对于 arguments,可以使用 Array.prototype.slice.call(arguments); 来达到转换的目的,但对于 NodeList 则不行了,其在 IE8 及以下将会报错,只能说其 JS 引擎有所限制。
因此,如果需要把 NodeList 转换为真正的数组,则需要做下兼容处理。
```function realArray(c) {
try {
return Array.prototype.slice.call(c);
} catch (e) {
var ret = [], i = 0, len = c.length;
for (; i < len; i++) {
ret[i] = (c[i]);
}
return ret;
}
}
方法二 使用ES6中Array.from方法
var arr = Array.from(obj)