常用的方法
一、数组的方法:
1. push
向数组末尾添加一个或多个元素,并返回数组新的长度。将要添加的元素作为方法的参数传递。
arrayObject.push(添加元素1,添加元素2,....,添加元素n) //至少有一个添加元素
2. pop
删除并返回数组的最后一个元素
arrayObject.pop() //括号内不需要参数
3. unshift
向数组的开头添加一个或更多元素,并返回新的长度。
arrayObject.unshift(添加元素1,添加元素2,....,添加元素n) //至少有一个添加元素
4. shift
删除并返回数组的第一个元素
arrayObject.shift() //括号内不需要参数
5. slice
从某个已有的数组返回选定的元素
arrayObject.slice(start,end) //[start,end) start-起始位置索引,end-结束位置索引,可省略
6. splice
删除元素,并向数组添加新元素。 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
arrayObject.splice(index,howmany,item1,.....,itemX)
//index-起始位置 howmany-要删除的项目数量 item-向数组添加的新项目,替换的是被删除元素的位置
7. concat
连接两个或更多的数组,并返回结果。
arrayObject.concat(arrayX,arrayX,......,arrayX)
//将arrayObject与arrayx...等数组连接成一个新数组
8. join
用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔。
arrayObject.join(separator)
//separator-可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
9. reverse
用于颠倒数组中元素的顺序。
arrayObject.reverse() //括号内无参数
10. sort
对数组的元素进行排序
arrayObject.sort(sortby) //sortby-可选。规定排序顺序。必须是函数。
10. toLocaleString
把数组转换为本地字符串,并返回结果。
arrayObject.toLocaleString()
11. Array.isArray()
判断是否是一个数组:
Array.isArray(arr) // true || flase
12. forEach()
对数组进行循环。(一般我们也会用for对数组进行循环,用for会麻烦一些,因为它要用循环变量)
数组.foreach( function(item,index ,arr){
//第一个参数 item : 当前的数组元素。相当于arr[index]
//第二个参数 index:数组元素的索引;
//第三个参数 iarr 当前的数组
} );
13. map()
映射,功能:逐一处理原数组元素,并返回到一个新数组
arr.map( function(item,index ,arr){
//item : 当前的数组元素。相当于arr[index]
//arr 当前的数组
//index:数组元素的索引;
return
} );
什么时候要用map:
- 需要对一个数组进行一些加工。
- 而并不想修改源数组,只是希望在原数组基础上,得到一个新数组。
14. filter()
逐一过滤原数组元素,留下符合条件的元素得到一个新数组。需要进行接收
格式:
let arr2 = arr.filter( function(item,index ,arr){
//item : 当前的数组元素。相当于arr[index]
//index:数组元素的索引;
//arr 当前的数组
return 布尔值;//值为真,表示要留下这个数据。
} );
15. reduce()
不断地将前一项和后一项的值进行运算(具体规则是由回调函数决定的,每次的运算会涉及两项),把前一轮运算的结果作为当前运算的前一项。返回最后结果。
格式:
//格式1 :不带初始值
数组.reduce(function(prev,next){
return
})
//格式2:带初始值
数组.reduce(function(prev,next){...},初值)
//其中,
// 第一个参数prev表示前一项
//第二个参数next表示后一项。
//当然, 你可以改其它的变量名。
16. some()
只要数组中的某一个元素符合指定的条件,就会返回真,否则返回假。可以和js中的逻辑或类比
格式:
数组.some(function(value,index,arr){
return 条件;
})
17. every()
如果数组中的所有元素都符合指定的条件,才返回true,否则返回false。只要有一个满足,则整体的结果就是false。
数组.every(function(value,index,arr){
return 条件;
})
//注意:全部元素在条件中成立,则为true
18. includes
includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
注意:对象数组不能使用includes方法来检测。
二、日期的方法:
Date() 方法可返回当天的日期和时间。
在js中使用Date对象来表示一个时间
var 名称=new Date();
1. time.getDate()
几号(0~31)
2. time.getDay()
周几(0~6 0是星期日)
3. time.getMonth()
月份(0~11 0是一月)
4. time.getFullYear()
年份
5. time.getHours()
小时
6. time.getMinutes()
分钟
7. time.getSeconds()
秒数
8. time.getTime()
时间戳
三、字符串的方法
1. charAt
返回在指定位置的字符。
stringObject.charAt(index) //index-索引
2. charCodeAt()
返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
stringObject.charCodeAt(index)
3. formCharCode
接受一个或多个指定的 Unicode 值,然后返回一个字符串。
String.fromCharCode(numX,numX,...,numX) //num- Unicode编码
4. concat
连接两个或多个字符串并返回结果,与在数组中的使用方法相同。
stringObject.concat(stringX,stringX,...,stringX)
5. indexOf
可返回某个指定的字符串值在字符串中首次出现的位置。
stringObject.indexOf(searchvalue,fromindex)
//searchvalue-规定需检索的字符串值(必填)。 fromindex-规定在字符串中开始检索的位置(可选)。
//返回-1就表示没有这个字符串
6. lastIndexOf
可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。与indexOf类似。
stringObject.lastIndexOf(searchvalue,fromindex)
7. slice
可提取并返回字符串的某个部分,与在数组中作用相同。
stringObject.slice(start,end) //[start,end) start-起始位置索引,end-结束位置索引,可省略
8. substring
用于提取字符串中介于两个指定下标之间的字符。与slice类似,但参数不接受负值,且会自动调整参数位置,使较小参数在前,较大参数在后
stringObject.substring(start,stop)
9. substr
可在字符串中抽取从 start 下标开始的指定长度的字符。
stringObject.substr(start,length)
10. split
用于把一个字符串分割成字符串数组。
stringObject.split(separator,howmany)
//separator-字符串或正则表达式,从该参数指定的地方开始分割
//howmany-可选。可指定返回的数组的最大长度。
11. toUpperCase 与 toLowerCase
toUpperCase()方法用于把字符串转换为大写。
toLowerCase() 方法用于把字符串转换为小写。
stringObject.toUpperCase()
stringObject.toLowerCase()
四、ES6 新增的方法
1. Array.from()
这个方法是Array构造器的静态方法,将把类数组对象转成真正的数组.
格式1:Array.from(类数组对象);
格式2:Array.from(类数组对象,function(item,index){
return ;//
})
2. Array.of()
将一组值转换为数组。与Array.from功能相似,理解用来创建数组。
主要目的是弥补构造器Array()的不足。
let arr1=new array(3); //创建一个数组,它有三个元素
let arr2=new array("3"); //创建一个数组,它有一个元素,为字符串"3"
//改用Array.of来创建
let arr1=new array.of(3); //创建一个数组,它有一个元素,为字符串"3"
let arr2=new array("3"); //创建一个数组,它有一个元素,为字符串"3" 二者形式统一了
3. find 和 findIndex
find:用于找出第一个符合条件的数组元素。找不到则是undefined 。注意,它是不会返回多个,只会找一个,找到了就返回。如果你要把所有的满足条件的数组元素都找出来,你应该用filter().
findIndex:返回第一个符合条件的数组元素的索引。找不到则是-1;
arr.find(function(item,index){
Return 条件 ;//
})
4. includes()
判断元素是否在数组中存在。
数组.includes(元素) //返回值是true|false
5. fill()
给数组填充指定值。fill方法用于空数组的初始化非常方便。已有数据会被覆盖,fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。
格式1: arr.fill(值)
格式2: arr.fill(值,起点,终点) 包括起点,不包括终点
五、math的方法
1. abs
可返回数的绝对值。
Math.abs(x) //x-必填,且必须是一个数值
2. ceil
可对一个数向上取整。
Math.ceil(x) //x-必填,且必须是一个数值
3. floor
可对一个数向下取整
Math.floor(x)
4. toFixed
把 Number 四舍五入为指定小数位数的数字。
number值.tofixed(x) //x-为小数位数
5. random
用于生成0~1之间的一个随机数
Math.random()
六、一些其它的方法
1. preventDefault()
阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。
event.preventDefault()
参数:event 必需。event 参数来自事件绑定函数。
2. event.stopPropagation()
阻止事件冒泡到父元素,阻止任何父事件处理程序被执行。
event.stopPropagation()
参数:event 必需。event 参数来自事件绑定函数。
3. defineProperty
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
语法
Object.defineProperty(obj, prop, descriptor)
参数
obj要在其上定义属性的对象。prop要定义或修改的属性的名称。descriptor将被定义或修改的属性描述符。
返回值
被传递给函数的对象。
在 ES6 中,由于 Symbol类型的特殊性,用Symbol类型的值来做对象的key与常规的定义或修改不同,而Object.defineProperty 是定义key为Symbol的属性的方法之一。
描述
该方法允许精确添加或修改对象的属性。通过赋值操作添加的普通属性是可枚举的,能够在属性枚举期间呈现出来[for...in]或 [Object.keys]方法, 这些属性的值可以被改变,也可以被[删除]。这个方法允许修改默认的额外选项(或配置)。默认情况下,使用 Object.defineProperty() 添加的属性值是不可修改的。
属性描述符
对象里目前存在的属性描述符有两种主要形式:数据描述符和存取描述符。数据描述符是一个具有值的属性,该值可能是可写的,也可能不是可写的。存取描述符是由getter-setter函数对描述的属性。描述符必须是这两种形式之一;不能同时是两者。
数据描述符和存取描述符均具有以下可选键值(默认值是在使用Object.defineProperty()定义属性的情况下):
-
configurable当且仅当该属性的 configurable 为 true 时,该属性
描述符才能够被改变,同时该属性也能从对应的对象上被删除。默认为 false。 -
enumerable当且仅当该属性的
enumerable为true时,该属性才能够出现在对象的枚举属性中。默认为 false。
数据描述符同时具有以下可选键值:
-
value该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。默认为 undefined。
-
writable当且仅当该属性的
writable为true时,value才能被[赋值运算符]改变。默认为 false。
存取描述符同时具有以下可选键值:
-
get一个给属性提供 getter 的方法,如果没有 getter 则为
undefined。当访问该属性时,该方法会被执行,方法执行时没有参数传入,但是会传入this对象(由于继承关系,这里的this并不一定是定义该属性的对象)。默认为 undefined。 -
set一个给属性提供 setter 的方法,如果没有 setter 则为
undefined。当属性值修改时,触发执行该方法。该方法将接受唯一参数,即该属性新的参数值。默认为 undefined。
记住,这些选项不一定是自身属性,如果是继承来的也要考虑。为了确认保留这些默认值,你可能要在这之前冻结 [Object.prototype],明确指定所有的选项,或者通过 [Object.create(null)]将[__proto__]属性指向[null]
4. confirm
confirm() 方法用于显示一个带有指定消息和 OK 及取消按钮的对话框。
语法: confirm(message)
参数: message 要在 window 上弹出的对话框中显示的纯文本(而非 HTML 文本)
如果用户点击确定按钮,则 confirm() 返回 true。如果点击取消按钮,则 confirm() 返回 false。
5. reduceRight
语法:
array.reduceRight(function(total, currentValue, currentIndex, arr), initialValue)
-
function 必须填写,是用于执行每个数组元素的函数。
- total 必需。初始值,或者计算结束后的返回值
- currentValue 必需。当前元素
- currentIndex 可选。当前元素的索引
- arr 可选。当前元素所属的数组对象
-
initialValue 可选。传递给函数的初始值
-
返回计算结果
reduceRight()方法的功能和 reduce( ) 功能是一样的,不同的是reduceRight() 是从数组的末尾向前将数组中的数组项做累加(主要看函数参数是怎么写的)。
<p>点击按钮从右到左,由最后一个元素开始减去每个数组的元素。</p>
<button onclick="myFunction()">点我</button>
<p>计算后的值: <span id="demo"></span></p>
<script>
var numbers = [1,88,100];
function getSum(total, num) {
return total - num;
}
function myFunction(item) {
document.getElementById("demo").innerHTML = numbers.reduceRight(getSum);
}
</script>