数组api
改变数组的 push、pop、unshift、shift,sort、reverse、splice
不改变原数组 返回新数组 concat、join,slice
var arr = ['abc','123','没有毛线','say good bye']
一、数组 => 字符串
(1) join() 将数组转成字符串 可自定义分隔符
var s1 = arr.join('=>')
console.log(s1) //=>abc=>123=>没有毛线=>say good bye
(2) String(arr) 将数组转成字符串并","分隔每个元素
var s2 = String(arr)
console.log(s2) // => abc,123,没有毛线,say good bye
(3) toLocaleString()
var s3 = arr.toLocaleString()
console.log(s3) // => abc,123,没有毛线,say good bye
console.log(arr.toLocaleString() === String(arr)) //true
(4) toString() 拍照 返回字符串
var s4 = arr.toString()
console.log(s4) // => abc,123,没有毛线,say good bye
(5) JSON.stringify()
var arrObject = [{'a':1},{'b':2},{'c':3}]
var s5 = JSON.stringify(arr)
console.log(s5) // =>'[{"a":1},{"b":2},{"c":3}]'
二、数组 元素添加
(1) push() 向数组尾部添加元素 改变了数组
arr.push('添加一个')
console.log(arr) // ["abc", "123", "没有毛线", "say good bye", "添加一个"]
(2) unshift() //向数组头部添加 改变了数组
arr.unshift('头排')
console.log(arr) //["头排", "abc", "123", "没有毛线", "say good bye", "添加一个"]
(3) concat() 合并数组 不改变数组 返回新数组
var arr2 = [1,2,3]
var newArr = arr.concat(arr2)
console.log(arr,newArr) //["头排", "abc", "123", "没有毛线", "say good bye", "添加一个", 1, 2, 3]
三、数组元素的删除
(1) pop() 删除数组最后一个元素 改变数组
arr.pop()
console.log(arr) //"头排", "abc", "123", "没有毛线", "say good bye"]
(2) shift() 删除数组的第一个元素 改变数组的长度
arr.shift()
console.log(arr) // "abc", "123", "没有毛线", "say good bye"]
(3) slice() 从某一元素开始到结束(不包括结束),创建新数组,原数组不改变
var newArrs = arr.slice(0,1)
console.log(arr) //["abc", "123", "没有毛线", "say good bye"]
console.log(newArrs) //["abc"]
var newArr3 = arr.splice(0,1)
console.log(arr)
console.log(newArr3)
四、排序
var arr4 = [1,4,5,3]
var newArr4 = arr4.sort()
console.log(arr4) //[1, 3, 4, 5]
var arr5 = [1,4,5,3]
var newArr5 = arr5.reverse()
console.log(arr5) //[3, 5, 4, 1]
五、查找元素
(1) includes()
var is = arr.includes('123',0)
console.log(is) //true
(2) indexof() 从前往后
var is1 = arr.indexOf('123')
console.log(is1) //0
(3) lastIndexOf() //从后往前 同indexOf
六、伪数组 : 实质上是一个对象,有length属性,也可以按索引存储数据,但是没有数组api,例如: arguments对象、getElementsByTagName等
伪数组转为真实数组
(1) Array.prototype.slice.call()
var obj = {0: 'a',1:'b', 2:'c',length:3}
var objToArr = Array.prototype.slice.call(obj)
console.log(objToArr) //=>['a','b','c']
(2) es6的Array.from()
console.log(Array.from(obj)) //=> ['a','b','c']
字符串api 对于字符串来说,不管进行任何操作,元字符串都不会改变
var str = 'hello 2018'
(1) charAt() 获取指定位置的字符
console.log(str.charAt(1)) //=>'e'
(2) charCodeAt() 获取指定位置的字符编码
console.log(str.charCodeAt(1)) //=>101
(3) indexOf() 查找某一字符 或 字符串
console.log(str.indexOf('o')) //=>4
(4) lastIndexOf() 同上 从后往前
(5) slice(1,2) 截取从1到2的字符串 不包含2
console.log(str.slice(1,2)) //e
(6) split() 把字符串分隔成数组
console.log(str.split('')) //["h", "e", "l", "l", "o", " ", "2", "0", "1", "8"]
(7) substring(1,2) 同slice(1,2)
console.log(str.substring(1,2)) // => e
(8) substr(1,2) 从1截取 2个字符
console.log(str.substr(1,2)) //=>el
(9) toLowerCase() 转小写 返回一个副本
console.log(str.toLowerCase()) //=>'hello 2018'
(10) toUpperCase() 转大写 返回一个副本
console.log(str.toUpperCase()) //=> 'HELLO 2018'
(11) 正则 match() 模式匹配
console.log(str.match('o')) //=>["o", index: 4, input: "hello 2018"]
(12) 正则 replace() 查找并替换
console.log(str.replace('2018','world')) // =>'hello world'
对象api
Object.prototype
var o = new Object()
(1) Object.prototype.constructor 判断该对象指向的构造函数
console.log(Object.prototype.constructor === Object) // =>true
(2) Object.prototype.toString(11) 返回一个目标对象的字符串
var o1 = {'a':1}
console.log(o1.toString()) //=>'[object Object]'
var o2 = new Number(22)
console.log(o2.toString()) //=>'22'
console.log(o2.toString(22)) //=>bd //转成进制数的参数
(3) Object.prototype.valueOf() 返回得失用基本类型标识的this的值
var obj = {}
console.log(typeof obj.valueOf()) //Objct
console.log(obj.valueOf() === obj) //true
var num1 = new Number(100)
console.log(typeof num1) //object
console.log(typeof num1.valueOf) //function
console.log(typeof num1.valueOf()) //number
(4)Object.prototype.hasOwnProperty(prop) 判断自身是否存在该属性
var obj1 = {prop:'haha'}
console.log(obj1.hasOwnProperty('prop')) //true
console.log(obj1.hasOwnProperty('propssss')) //false
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。