搜尋
首頁web前端js教程Js數組的操作push,pop,shift,unshift等方法詳細介紹_javascript技巧

js中針對陣列操作的方法還是比較多的,今天突然想到來總結一下,也算是溫故而知新吧。不過不會針對每個方法進行講解,我只是選擇其中的一些來講。

首先來講一下push和pop方法,這兩個方法只會對數組從尾部進行壓入或彈出,而且是在原數組進行操作,任何的改動都是會影響到操作的數組。 push(args)可以每次壓入多個元素,並傳回更新後的陣列長度。 pop()函數每次只會彈出最後一個結尾的元素,並傳回彈出的元素,如果是對空組數呼叫pop()則傳回undefined。 如果參數是數組則是將整個數組當作一個元素壓入原來的數組當中。並不會產生類似concat合併數組時產生的“拆分現象”,下面看例子

例1:
var oldArr=[1,2,3];
alert(oldArr.push(4,[5,6]))–>5(這裡只會將[5,6]當做一個元素來計算,返回更新後的數組長度5)
此時oldArr –>[1,2,3,4,[5,6]]
alert(oldArr.pop())–>[5,6](這裡彈出最後一個元素[5,6],而不是6 )
此時oldArr–>[1,2,3,4]
oldArr.pop()–>4
oldArr.pop()–>3
oldArr.pop()–> 2
oldArr.pop()–>1
oldArr.pop()–>undefined(空數組彈出)
現在講完push和pop再看一下unshift和shift
這兩個方法都是透過對陣列的頭部進行的操作,其他基本跟push和pop類似,但是在IE中unshift方法返回的是undefined

例2:
var oldArr2 =[1,2];
oldArr2.unshift(3)–>undefined
此時oldArr2為–>[3,1,2]
oldArr2.shift()–>3
此時oldArr2為[1,2]
接下來看一下功能強大一點的splice,利用其可以進行數組隨意位置的元素添加,刪除,其操作也是在原有

數組上修改
splice(start,deleteCnt,args) 中的start表示開始操作下標,deleteCnt表示從開始下標開始(包括該元素)要刪除的元素個數,刪除操作返回刪除的元素。 args表示用來替換刪除掉的那些元素(可以有多個參數),start和deleteCnt必須為數字,如果不是數字嘗試轉換,轉換失敗當做0來處理。 splice必須至少有一個start元素,否則不做任何操作。 deleteCnt不存在表示刪除start及後面的全部元素(IE下,取0不做刪除)。 start可以為負數,表示從陣列右邊結尾開始計算。 deleteCnt如果為負數不做刪除,因為不可能刪除負個元素。
好了解釋就到這邊現在看一下例子,透過例子或許可以更好的理解

例3
var oldArr3=[1,2];
oldArr3.splice()–>”"(返回空的字串,不做任何操作,操作後oldArr3–>[1,2])
oldArr3.splice(“”)–>[1, 2](“”嘗試轉換為數字失敗返回0,所以刪除1,2,操作後oldArr3–>[],但是IE下有點噁心,不做任何操作)
oldArr3.splice(“1a”)– >同上
odlArr3.splice(0,2)–>[1,2](「從下標0的元素開始,刪除兩個元素1,2因此刪除後oldArr3–>[])
oldArr3 .splice(0,-1)–>”"(從0下標開始刪除-1個元素,故等於沒做任何操作,操作後oldArr3–>[1,2])
oldArr3.splice(1 ,1)–>2(從下標1 開始刪除1個元素,即刪除2,所以刪除後oldArr3–>[1])
oldArr3.splice(1,4)–>2(從下標1開始刪除4個元素,1開始只有1個元素,故刪除2,所以刪除後oldArr3–>[1])
oldArr3.splice(-1,0,3)–>”"(從下標- 1即2元素開始刪除0個元素,然後加入元素3,所以操作後oldArr3–>[1,3,2])
oldArr3.splice(-1,1,3)–>2(從小標- 1即2元素開始刪除1個元素,然後加入元素3,操作後為oldArr3–>[1,3])
OK接下來開始講concat,這個方法用來連接兩個或多個陣列,該陣列不會改變原來的陣列只會傳回新的一個陣列。 🎜>:
var oldArr4=[1,2];
oldArr4.concat(3,4)–>[1,2,3,4] oldArr4.concat(3,4,[5 ,6])–>[1,2,3,4,5,6](這邊加的是[5,6]中的元素5和元素6) oldArr4.concat(3,[4, [5,6]])–>[1,2,3,4,[5,6]](這邊最裡層的元素[5,6]整個用來添加,而不是拆開)
下面來講數組中的排序方法sort
sort(function)是針對原數組進行的排序,不會產生新的陣列。預設sort()不帶參數時按照陣列中的元素轉換成字串進行比較,比較的時候按照字元在字元編碼中的順序進行排序,每個字元都有一個唯一的編碼與其對應。

且看下面例子
var oldArr5=[3,1,5,7,17​​] 看這個一般觀念上以為對oldArr5排序時oldArr5.sort()會按照數字從小到大排序即回傳[1,3,5,7,17​​],但看一下結果其實不然回傳的是[1,17,3,5,7] 因為比較的時候都會轉成字串。然後對字串進行一個個的比較如果第一個字元相同則比較第二個,否則直接傳回比較結果,因為”17″
sort(function)方法除了預設的無參外還可以傳入自訂的排序方法,這樣排序的結果完全可以由自己來控制了,想怎麼排就怎麼排,是不是很爽啊,呵呵。 一般自訂的function比較函數,包含兩個參數分別代表用來比較的左元素和右元素。然後透過一定方式回傳一個結果,如果傳回值大於0表示交換左右元素,如果傳回值小於0或等於0則表示不不會交換左右元素。現在來看看範例

例5:
依照數字由大到小排列原有陣列

複製程式碼 程式碼如下:

var oldArr5=[3,1,5,7,17​​]; //初始陣列
function mySort(left,right) {
if(leftreturn 1;}//如果左邊元素小於右邊元素則交換兩數
else{
return -1;}//如果左邊元素大於等於右邊元素不做交換
}

當然上面的方法可以簡化為funaction mySort(left,right){ return right-left;}
複製程式碼 程式碼如下:

//依照偶數在前奇數在後排序
var oldArr6=[3,6,7, 18];//初始陣列
function mySort2(left,right){
if(left%2==0)return -1;//若左邊元素為偶數則不交換
if(right %2==0)return 1; //如果右邊元素為偶數則交換
return 0; //不交換
}

最後的slice不多講,只用來截取原數組中的部分元素,回傳一個新的數組,原始數組不會改變,其操作方式跟string的slice類似
複製程式碼 程式碼如下:

var oldArr7=[1,2,3,4];
oldArr7.slice(0)–>[1,2,3,4]
oldArr7.slice(0,2)–>[1,2]
oldArr7.slice(0,0)–>[]
oldArr7.slice(0,-1)–>[1, 2,3]
oldArr7.slice(-3,-1)–>[2,3]
oldArr4.slice(-1,-3)–[]
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP8.0中数组的合并操作:array_mergePHP8.0中数组的合并操作:array_mergeMay 14, 2023 am 08:52 AM

在PHP8.0版本中,数组合并操作是经过了改进的。这个改进主要针对的是数组数据类型的合并操作。在之前的版本中,PHP提供的数组合并操作是使用“+”符号实现的。但是,这种方法存在一些问题。如果两个数组中包含相同的键,那么第二个数组的键值将会覆盖第一个数组中的键值,如果需要把两个数组合并在一起,那么就需要技巧地使用array_merge()函数了。现在,在PHP

如何在PHP中将字符串放入数组,并按换行符拆分如何在PHP中将字符串放入数组,并按换行符拆分Aug 28, 2023 pm 10:57 PM

什么是PHP?PHP代表超文本预处理器,是一种用于Web开发的流行服务器端脚本语言。它旨在创建动态和交互式网页。PHP嵌入在HTML代码中并在服务器上执行,生成发送到客户端浏览器的HTML输出。凭借其简单易学的语法,PHP允许开发人员构建动态网站、处理表单数据、与数据库交互以及执行各种服务器端任务。它拥有庞大的库和框架生态系统,可增强其功能并使开发人员能够创建强大且可扩展的Web应用程序。PHP受到托管提供商的广泛支持,使其成为Web开发项目的首选。如何在PHP中将字符串放入数组并按换行符分割方

使用PHP进行数组操作的最佳实践使用PHP进行数组操作的最佳实践Jun 06, 2023 am 10:30 AM

PHP是一种广泛使用的服务器端脚本语言,可以通过许多不同的方式进行数组操作。本文将介绍我们编写PHP代码时的最佳实践,帮助您创建更高效、更美观、更可读的代码。1.使用数组函数而不是手动循环最好使用PHP数组函数,而不是手动循环数组来移动、操作或修改数据。PHP数组函数执行较快,具有更好的可读性和可维护性。下面是一些常用的PHP数组函数:array_push(

PHP8.0中数组中的危险操作:array_splice()PHP8.0中数组中的危险操作:array_splice()May 14, 2023 am 08:24 AM

PHP8.0中数组中的危险操作:array_splice()在PHP编程中,数组是一个非常常用的数据结构,它允许我们在一个变量中存储多个值。而array_splice()函数则是一个处理数组的方法,它可以删除或替换数组中的元素。但是,在PHP8.0中,array_splice()函数却有一些危险操作,如果使用不当,将会导致一些严重的问题。本文将为大家详细介绍

使用PHP自定义函数扩展数组交集和并集的功能使用PHP自定义函数扩展数组交集和并集的功能May 01, 2024 am 10:45 AM

使用PHP自定义函数可扩展数组交集和并集功能,自定义交集函数允许按键或值查找交集,而自定义并集函数按键或值查找并集。这使您能够基于特定需求灵活操作数组。

PHP数组操作大全:array_diff()PHP数组操作大全:array_diff()Jun 20, 2023 pm 03:57 PM

在PHP中,数组是一种非常常见和有用的数据结构。PHP提供了许多不同的函数和方法来操作和处理这些数组。其中一个非常有用的函数是array_diff()。本文将详细讨论此函数。array_diff()函数的基本用法非常简单。该函数接受两个或多个数组作为参数,并返回一个新数组,其中包含第一个数组中存在,但其他数组中不存在的元素。下面是一个示例:$array1=

PHP中的IMAP和POP协议的应用PHP中的IMAP和POP协议的应用Jun 23, 2023 am 11:51 AM

随着互联网和电子邮件的普及,人们越来越依赖于电子邮件通信。PHP作为一种流行的脚本编程语言,也为电子邮件操作提供了强大的支持。其中,IMAP和POP协议是PHP中邮件操作的两种常用协议。下面就来详细介绍一下它们在PHP中的应用。一、IMAP协议IMAP(InternetMessageAccessProtocol)协议是在邮件客户端和邮件服务器之间建立的

PHP 数组键值互换:性能对比及最优方案详解PHP 数组键值互换:性能对比及最优方案详解May 04, 2024 pm 01:51 PM

PHP数组键值互换的最佳方案:使用内置的array_flip()函数,时间复杂度为O(n)。对于较大的数组,array_flip()的性能优势更明显。实战案例:可使用array_flip()将购物车中商品名称数组转换为商品数量数组。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。