最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js常用函數(shù)push()、pop()、shift()、unshift()、slice()和splice()等詳解

 更新時(shí)間:2023年11月03日 09:49:50   作者:風(fēng)隨心飛飛  
這篇文章主要給大家介紹了關(guān)于js常用函數(shù)push()、pop()、shift()、unshift()、slice()和splice()等的相關(guān)資料,js中數(shù)組操作函數(shù)還是非常多的,今天忽然想到來(lái)總結(jié)一下,也算是溫故而知新吧,需要的朋友可以參考下

前言

最近對(duì)前端一些函數(shù)的用法還不是很熟悉,有一些函數(shù)容易混淆,在此總結(jié)一下,同時(shí)分享給各位小伙伴:

1. join() 函數(shù)

join() 將數(shù)組中元素 組成字符串 ,需要傳個(gè)參數(shù)作為連接符,不傳的話默認(rèn)就是逗號(hào)。

2.push() 函數(shù)

在數(shù)組 尾部逐個(gè)添加 元素,返回結(jié)果數(shù)組的長(zhǎng)度,能接收任意數(shù)量參數(shù),push() 修改了原數(shù)組。

3. pop() 函數(shù)

pop() 移除數(shù)組最后一項(xiàng),返回的是被移除項(xiàng)。修改原數(shù)組

4.shift() 函數(shù)

shift() 刪除數(shù)組的第一項(xiàng)元素,返回被刪除的元素, 修改原數(shù)組

5.unshift() 函數(shù)

向數(shù)組的頭部添加元素,返回的是結(jié)果數(shù)組的長(zhǎng)度,修改原數(shù)組

6.sort() 函數(shù)

將數(shù)組按照從小到大的順序排列, 修改原數(shù)組 。

注意:

sort()方法是用于數(shù)組排序的,語(yǔ)法如下:array.sort(),

使用sort()方法后會(huì)改變?cè)瓟?shù)組的順序(而不是生成一個(gè)新數(shù)組,同時(shí)原數(shù)組保持不變)

示例一:對(duì)字符數(shù)組進(jìn)行排序

    var myarr1=["h","e","l","l","o"];
    myarr1.sort();
    console.log(myarr1);//(5) ['e', 'h', 'l', 'l', 'o']

1、sort中沒(méi)有參數(shù)時(shí),會(huì)按照數(shù)組元素對(duì)應(yīng)的ASCII碼進(jìn)行比較和排序

示例二:對(duì)數(shù)字?jǐn)?shù)組進(jìn)行排序

    var myarr2=[9,5,1,4,6];
    myarr2.sort();
    console.log(myarr2);//(5) [1, 4, 5, 6, 9]

sort()無(wú)法對(duì)由兩位數(shù)以上的數(shù)組元素構(gòu)成的數(shù)組進(jìn)行合理排序

示例

    var myarr2=[10,25,3,8];
    myarr2.sort();
    console.log(myarr2);//10 25 3 8

出現(xiàn)原因和解決方法

因?yàn)閟ort()方法會(huì)首先會(huì)調(diào)用每個(gè)數(shù)組數(shù)據(jù)項(xiàng)的toString()方法,

轉(zhuǎn)換成字符串以后再進(jìn)行比較,在字符串中"25"<“3”,

解決方法是需要用到sort的參數(shù),此時(shí)這個(gè)參數(shù)叫做比較函數(shù)

2、sort()的參數(shù)——比較函數(shù)

示例:使用比較函數(shù)將數(shù)字?jǐn)?shù)組進(jìn)行正確排序

 	var myarr2=[10,25,3,8];
    var mycompare=function (x,y){
      if(x<y) return -1;
      else if(x>y) return 1
      else return 0;
    };
    myarr2.sort(mycompare);
    console.log(myarr2);//(4) [3, 8, 10, 25]

比較函數(shù)的參數(shù)

比較函數(shù)會(huì)接受兩個(gè)參數(shù),并對(duì)兩者進(jìn)行比較

  • 若第一個(gè)參數(shù)應(yīng)位于第二個(gè)參數(shù)之前,則返回一個(gè)負(fù)數(shù)
  • 若第一個(gè)參數(shù)等于第二個(gè)參數(shù),則返回0
  • 若第一個(gè)參數(shù)應(yīng)位于第二個(gè)參數(shù)之后,則返回一個(gè)正數(shù)

通過(guò)以上邏輯的比較函數(shù),會(huì)使數(shù)組最后變?yōu)樯蚺帕?

若要變?yōu)榻敌?只需返回一個(gè)負(fù)數(shù)變?yōu)榉祷匾粋€(gè)正數(shù)即可(正數(shù)變負(fù)數(shù),負(fù)數(shù)變正數(shù))

比較函數(shù)不能對(duì)混搭(字符+數(shù)字)數(shù)組進(jìn)行排序

  var myarr3=["h",10];
    myarr3.sort(mycompare);
    console.log(myarr3);//(2) ['h', 10]
    myarr3.sort();
    console.log(myarr3);//(2) [10, 'h']

不能將比較函數(shù)用于比較一個(gè)不能轉(zhuǎn)化成數(shù)字的字符串和數(shù)組的排序,

這是因?yàn)楸容^函數(shù)會(huì)先將字符串轉(zhuǎn)化成數(shù)字再比較,當(dāng)字符串不能轉(zhuǎn)換成數(shù)字時(shí),就不能比較大小(不用比較函數(shù),也就是sort不加參數(shù)時(shí),比較的是ASCII值,此時(shí)可以比較)

正確用法:

    // 對(duì)于不能轉(zhuǎn)換成數(shù)字的字符串(字母型字符串),不使用比較參數(shù),直接比較ASCII值
    var myarr3=["h",10];
    myarr3.sort();
    console.log(myarr3);//(2) ['h', 10]
    // 對(duì)于可以轉(zhuǎn)換成數(shù)字的字符串(數(shù)字型字符串),使用比較函數(shù)轉(zhuǎn)換成數(shù)字再比較
    var myarr4=["23",37,"1",14];
    myarr4.sort(mycompare);
    console.log(myarr4);//(4) ['1', 14, '23', 37]

總結(jié):

1. 數(shù)組中既有字符串又有數(shù)字時(shí),先看看其中的字符串是字母型字符串還是數(shù)字型字符串,

2. 若是字母型字符串,sort不用帶參數(shù),直接比較ASCII值

若是數(shù)字型字符串,sort帶參數(shù),讓比較函數(shù)將字符串轉(zhuǎn)換成數(shù)字再比較

3.對(duì)于由對(duì)象構(gòu)成的數(shù)組,如何排序?

需求

數(shù)組項(xiàng)是對(duì)象,現(xiàn)在需要根據(jù)對(duì)象的某個(gè)屬性,對(duì)數(shù)組進(jìn)行排序

	//要求根據(jù)對(duì)象屬性age對(duì)數(shù)組進(jìn)行排序
    var arr=[
      {age:10,name:'Tom'},
      {age:8,name:'Jack'},
      {age:20,name:'Michel'},
      {age:12,name:'Daniel'},
    ];

解決方法:使用比較函數(shù)

    var compare = function (obj1, obj2) {
        if (obj1.age < obj2.age) return -1;
        else if (obj1.age > obj2.age) return 1;
        else return 0;
    } 
    console.log(arr.sort(compare));

效果:

{age: 8, name: 'Jack'}
{age: 10, name: 'Tom'}
{age: 12, name: 'Daniel'}
{age: 20, name: 'Michel'}

7. reverse() 函數(shù)

數(shù)組反轉(zhuǎn)。

8. concat() 函數(shù)

在不影響原數(shù)組的情況下,復(fù)制了一個(gè)數(shù)組,將參數(shù)添加到副本的尾部,因此若沒(méi)有傳參,就相當(dāng)于復(fù)制了原數(shù)組。

9.slice() 函數(shù)

slice() 不影響原數(shù)組 ,返回原數(shù)組指定開(kāi)始位置 - 結(jié)束位置的新數(shù)組。 這個(gè)位置是數(shù)組的下標(biāo),當(dāng)然是從0開(kāi)始計(jì)算,如果只有一個(gè)參數(shù),那就是默認(rèn)第二個(gè)參數(shù)到尾部。

demo中可以看出,返回的新數(shù)組是 不包含 結(jié)束位置的那個(gè)元素。

如果不傳第二個(gè)參數(shù),默認(rèn)返回到最后,也 不包含 最后一個(gè)的哦。 參數(shù)是 負(fù)數(shù),相當(dāng)于反著來(lái),這時(shí)候就是包含了結(jié)束位置, 不包含 開(kāi)始位置的元素。

10. splice() 函數(shù)

刪除任意項(xiàng)元素,需要兩個(gè)參數(shù):要?jiǎng)h除的位置 和 要?jiǎng)h除的數(shù)量。

demo中看出,splice()返回被刪除的元素?cái)?shù)組,原數(shù)組被修改了。

插入任意項(xiàng)元素,需要三個(gè)參數(shù):要?jiǎng)h除的位置,一個(gè)不刪 和 要插入的元素。

事實(shí)證明,是在要插入位置 之前 插入的。

替換,其實(shí)就是在指定位置刪除任意項(xiàng)元素,再插入任意項(xiàng)元素。

11. indexOf() & lastIndexOf() 函數(shù)

查找參數(shù)元素在數(shù)組中的 位置 ,找不到就返回 -1 。那必傳參數(shù)一定是目標(biāo)元素咯,還有個(gè)可選參數(shù)就是要開(kāi)始查找的起點(diǎn)位置。 indexOf() 從頭到尾找,lastIndexOf() 從尾到頭找。

總結(jié)

到此這篇關(guān)于js常用函數(shù)push()、pop()、shift()、unshift()、slice()和splice()等詳解的文章就介紹到這了,更多相關(guān)js常用函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript中值類型和引用類型的區(qū)別

    JavaScript中值類型和引用類型的區(qū)別

    本文主要介紹了JavaScript中值類型和引用類型的區(qū)別,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • js實(shí)現(xiàn)經(jīng)典掃雷游戲

    js實(shí)現(xiàn)經(jīng)典掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)經(jīng)典掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 用javascript實(shí)現(xiàn)gb2312轉(zhuǎn)utf-8的腳本

    用javascript實(shí)現(xiàn)gb2312轉(zhuǎn)utf-8的腳本

    用javascript實(shí)現(xiàn)gb2312轉(zhuǎn)utf-8的腳本...
    2007-05-05
  • js給table賦值的實(shí)例代碼

    js給table賦值的實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇js給table賦值的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • javascript數(shù)組元素刪除方法delete和splice解析

    javascript數(shù)組元素刪除方法delete和splice解析

    這篇文章主要介紹了javascaipt數(shù)組元素刪除方法delete和splice解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • JS實(shí)現(xiàn)前端多標(biāo)簽頁(yè)通信BroadcastChannel

    JS實(shí)現(xiàn)前端多標(biāo)簽頁(yè)通信BroadcastChannel

    BroadcastChannel 是一種用于同源不同窗口/標(biāo)簽頁(yè)間通信的 API,可解決多標(biāo)簽頁(yè)狀態(tài)同步問(wèn)題,通過(guò)創(chuàng)建頻道并監(jiān)聽(tīng)消息,可實(shí)現(xiàn)登錄狀態(tài)、頁(yè)面設(shè)置、業(yè)務(wù)數(shù)據(jù)等實(shí)時(shí)同步,下面就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下
    2025-10-10
  • 微信小程序中單位rpx和rem的使用

    微信小程序中單位rpx和rem的使用

    rpx是微信小程序新推出的一個(gè)單位,按官方的定義,rpx可以根據(jù)屏幕寬度進(jìn)行自適應(yīng),在rpx出現(xiàn)之前,web頁(yè)面的自適應(yīng)布局已經(jīng)有了多種解決方案,為什么微信還搗鼓出新的rpx單位?下面通過(guò)這篇文章來(lái)一起看看吧。
    2016-12-12
  • JS實(shí)現(xiàn)鼠標(biāo)單擊與雙擊事件共存

    JS實(shí)現(xiàn)鼠標(biāo)單擊與雙擊事件共存

    本篇文章主要是對(duì)JS實(shí)現(xiàn)鼠標(biāo)單擊與雙擊事件共存的簡(jiǎn)單實(shí)例進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-03-03
  • JavaScript html5 canvas畫(huà)布中刪除一個(gè)塊區(qū)域的方法

    JavaScript html5 canvas畫(huà)布中刪除一個(gè)塊區(qū)域的方法

    這篇文章主要介紹了JavaScript html5 canvas畫(huà)布中刪除一個(gè)塊區(qū)域的方法,涉及JavaScript結(jié)合html5操作canvas畫(huà)布圖形繪制的技巧,需要的朋友可以參考下
    2016-01-01
  • js 作用域和變量詳解

    js 作用域和變量詳解

    本文主要介紹了js 的作用域和變量的相關(guān)知識(shí),具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02

最新評(píng)論

丰台区| 保山市| 蕉岭县| 灌阳县| 彩票| 景谷| 疏附县| 昭通市| 修水县| 申扎县| 威海市| 衡山县| 闻喜县| 宁武县| 和静县| 南城县| 沈丘县| 龙游县| 三江| 镇坪县| 万源市| 萝北县| 石泉县| 瑞安市| 海阳市| 台中市| 沅江市| 富顺县| 黑山县| 平邑县| 陆川县| 墨竹工卡县| 苍南县| 东阿县| 大丰市| 岳池县| 丹江口市| 灵台县| 志丹县| 格尔木市| 馆陶县|