一些常用的方法

161 阅读11分钟

常用的方法

一、数组的方法:

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(functionprevnext{
	return   
})

//格式2:带初始值
数组.reduce(functionprevnext{...},初值)
//其中,
 // 第一个参数prev表示前一项
  //第二个参数next表示后一项。
//当然, 你可以改其它的变量名。

16. some()

只要数组中的某一个元素符合指定的条件,就会返回真,否则返回假。可以和js中的逻辑或类比

格式:

数组.some(functionvalueindexarr{ 
	return  条件;
})

17. every()

如果数组中的所有元素都符合指定的条件,才返回true,否则返回false。只要有一个满足,则整体的结果就是false。

数组.every(functionvalueindexarr{ 
    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

    当且仅当该属性的enumerabletrue时,该属性才能够出现在对象的枚举属性中。默认为 false

数据描述符同时具有以下可选键值

  • value

    该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。默认为 undefined

  • writable

    当且仅当该属性的writabletrue时,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>