只读:只能读取属性不能修改
数组常见api(10)
pop() 删除并返回数组的最后一个元素。
push()向数组的末尾添加一个或者多个元素,返回新的长度。
shift ()删除并返回数组的第一个元素。
unshift ()向数组的开头添加一个或者多个元素,返回新的长度。
slice () 从某个已有的数组返回选定的元素。
arr.slice(1,3) 选定的是索引1和2,不包含3 只读
arr当中按照指定的索引截取子数组,索引含头不含尾,不会修改原数组,而是返回一个新数组。
arr.slice(2) slice方法只传一个参数,意思就是截取到末尾;
arr.slice(-2, -1) slice传递负数,负数代表到数第几个 从倒数第二个数到倒数第一个,含头不含尾。
splice() 删除元素,并向数组添加新元素
向数组删除元素 ,添加元素 ,替换元素。
arr.splice(2) 一个参数 ,把从下标为2开始的后面的数据都删掉,包括2;
arr.splice(2,3) 两个参数 ,从2开始,删除3个数,删除元素里包含开始索引的,包含2;
arr.splice(2, 2, 10, 20, 30) 从第三个参数开始后面可以传任意多个参数,都是替换的值 。
arr.splice(6, 0, 20) 可以把第二个参数写成0,就是添加,可以在任意位置添加元素 注意:在索引为6之前添加的
var arr = [1,2,3,4,5];
var res = arr.splice(0,3,5,2,4,2,5)
console.log(res); //1,2,3
删除返回删除的值
sort()对数组的元素进行排序。
a-b 升序 b-a 降序
join() 把数组转换成字符串;元素通过制定的分隔符进行分隔。不会修改原数组
concat() 连接两个或更多的数组,返回结果;
并不会修改原数组,得到一个新数组。 只读。
reverse()颠倒数组中元素的顺序。
ES5-api新增数组常见方法
2个索引方法:indexOf() 和 lastIndexOf(); 只读
arr.indexOf(2,[3]) 从arr当中[索引为3开始]去找2的索引,如果数组里有多个2,得到的是第一次出现的索引,如果值不存在,那么得到-1
arr.lastIndexOf(2) 从arr当中去找2的索引,如果数组里有多个2,得到的是最后一次出现的索引, 如果值不存在,那么得到-1
5个迭代方法:forEach()、map()、filter()、some()、every();
arr.forEach(function (item, index,arr) {
// item是值,index是索引,arr是数组本身
console.log(item, index,arr)
})
map也是用来遍历数组,遍历的同时需要给一个返回值,所有的返回值会放进一个新的数组,每一次都要写返回值,否则新的数组里会有undefined
var arr1 = arr.map(function (item ,index,arr) {
// item是值,index是索引,arr是原数组
console.log(item, index,arr)
return item*2
})
var arr2 = arr.map(function (item, index) {
if (index%2) {
return item * (1+0.3)
}
return item
})
fliter 过滤每一次遍历的时候都要返回一个条件(布尔值),当这个条件得结果为true的时候,当前值就会被保留,否则就被过滤掉,最终用一个新的数组来存结果 ,如果不写return,默认返回值是undefined,会隐式转换为false,相当于每次都返回的false
var arr1 = arr.filter(function (item, index) {
console.log(item, index)
return item > 4
})
some的最终结果是一个布尔值,每一次遍历的时候返回一个条件,只要在遍历过程中有一条数据满足条件(在所有的返回值当中只要有一个true就是true),整个some的结果就是true,在遍历的过程中只要发现了一个true就停止遍历
var is = arr.some(function (item, index) {
console.log(item, index)
return item > 10
})
every 必须每一次遍历返回的条件都是true,结果才为true,否则就是false(遍历过程中只要有一个是false就是false),every的最终结果为布尔值,只要任意一个不满足条件,遍历就结束,最终得到false
var is = arr.every(function (item, index) {
console.log(item, index)
return item % 2 === 0
})
2个归并方法:reduce()、reduceRight();
注意:function后加逗号加值,这个值可以是任意的,不会影响索引的值,只要加了就会从默认的1变为0,则curr也就会从下标为0开始,遍历全部;
这个值修饰的是res,值是多少,res的第一个值就是多少,不加值的话,res默认为arr[1]
reduce有两个参数,第一个参数是函数,第二个参数可选的默认值,在后面写上一个默认值,循环次数就跟数组长度相等,res默认值就是1,curr从arr[0]开始
var arr = [3,5,2,6,2]
var sum = arr.reduce(function (res, curr, index) {
console.log(res, curr, index) //1 3 0
return res *curr
}, 1)
reduce是从左往右归并,reduceRight从右往左
var arr = [
[1,2,3],
[4,5,6],
[7,8,9]
]
var arr1 = arr.reduceRight(function (res, curr) {
return res.concat(curr)
}, [])
console.log(arr1) // [7,8,9,4,5,6,1,2,3]
字符串 不常用api
字符串的比较规则: 按照unicode 码进行比较的 (优先比较首字符的unicode)
charCodeAt()返回在指定的位置的字符的 Unicode 编码。
fromCharCode()从字符编码创建一个字符串。
var str = 'hello string'
// 返回str[1]字符的编码,字母e的编码是101
console.log(str.charCodeAt(1)) // 101 //str
// 传一个编码,得到字符
console.log(String.fromCharCode(102)) // f //String
encodeURI(str) 字符串转换 decodeURI(code) 字节转换
console.log(encodeURI('张宇'));//%E5%BC%A0%E5%AE%87
console.log(decodeURI('%E5%BC%A0%E5%AE%87'));//张宇
字符串常见API
不常见 replace 不修改原数组 只读
字符串可以理解为,只要是只读的数组中拥有的属性和方法,字符串都是可以用的 字符串可以有lenth 可以通过下标[]访问 (for循环)slice......
字符串特有的api
str.charAt(下标) 字符串对应下标的字符。
String.fromCharCode() 传入指定的unicode编码返回这个 unicode 所对应的字符
Remember
str.charAt(下标) 字符串对应下标的字符。
indexOf() 检索字符串,返回下标。 查找字符串第一次出现的位置 第二个参数 从第几个开始找 ,找到返回下标,找不到返回-1
lastIndexOf
substring(starti[,endi+1]) 截取子字符串 不修改原数组 只读
substr(starti[,n]) starti从哪开始截取 n 截取几个 只读 不修改原数组
var str = 'szykadkaabsj'
console.log(str.substring(1,3));//zy
console.log(str.substr(1,2));//zy
split("切割符") 把字符串分割为字符串数组 切割符:以什么为界限 切割 不修改原数组 只读
var str = 'hello world';
var arr = str.split(); // "hello world"
var arr1 = str.split(' ');// "hello", "world"
var arr2 = str.split('') // "h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"
toUpperCase() 把字符串转换为大写。 str.toUpperCase() toLowerCase() 把字符串转换为小写。 str.toLowerCase()
slice()提取字符串的片断,并在新的字符串中返回被提取的部分。
var str1 = str.slice(2, 5) 含头不含尾
Math常用api
Math.random() 随机产生[0,1) 一个数字
固定套路 随机产生 min 和 max 之间的随机整数 Math.floor(Math.random()*(max-min)+min);
Math.floor(num) 向下取整
Math.ceil(num) 向上取整
Math.round(num) 把数四舍五入为最接近的整数。
Math.PI π的值
console.log(Math.PI) //3.14159265541612
//Math对象上的属性都是常量,不是变量,不能被修改
Math.PI = 3.14
console.log(Math.PI) //3.1415926542641641
var myPI = Math.PI.toFixed(3)
console.log(myPI) //3.142
Math.abs(num) 绝对值
Math.max(num1,num2,num3...) 取最大值 Math.min(num1,num2,num3) 取最小值 Math.pow(a,n) a是底数 n 指数 Math.sqrt(n); 开平方
日期对象
日期对象创建 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数(时间戳)
var date = new Date(); //默认是 系统 的当前日期
创建自定义的日期
var date1 = new Date(2008, 2, 1, 8, 2, 3) //2008年 3月1号8点2分3秒
时间戳 1970年1月1日至今的毫秒数 日期对象. var date = new Date(时间戳)
Date.now() 获取当前系统时间的时间戳 console.log(Date.now());
日期对象的 api toString() 将日期对象转换成字符串 toLocaleString() 将日期对象 转换 成 当地日期格式的字符串 toLocaleDateString() 将日期对象 转换 成 当地日期格式的字符串 只保留日期 没有时间 toLocaleTimeString() 将日期对象 转换 成 当地日期格式的字符串 只保留时间 没有日期 getTime() 获取日期对象 的时间戳
以下用的比较多
get系列API
getFullYear() 返回年
getMonth()返回月份0--11
getDate()返回某一天
getDay()返回星期0-6
getHours()返回小时
getMinutes()返回分钟
getSeconds()返回秒
getMilliseconds() 获取当前日期的毫秒(一般用不到)1秒===1000毫秒
set系列API
setFullYear()设置年份
setMonth()设置月
setDate()设置天
setHours()设置小时
setMinutes()设置分钟
setSeconds()设置秒
setTime()使用毫秒的形式设置时间对象
date: 可选,表示月中某一天的数值。如果不填,取系统当日 用本地时间表示。介于 1 ~ 31 之间: 0 为上个月最后一天 -1 为上个月最后一天之前的天数 如果当月有31天:32 为下个月的第一天 如果当月有30天: 32 为下一个月的第二天
例:现在时间:13:11:43 var date = new Date(2012, 2, 15, 13, 11, 43);2012年3月15日 13:11:43
date.setFullYear(2013, 5);2013年6月15日 13:11:43