2

数组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

Cymiran
1.2k 声望134 粉丝

跨越七海的风...