導航:首頁 > 編程語言 > js數組實現原理

js數組實現原理

發布時間:2023-06-08 10:06:48

1. js 操作數組

List是一個對象數組,數組的表現為[,,,,],數組中的每個元素以「,」隔開。List中僅有一個元素--{"id":"ID00001","name":"一二三四","guig":"100ml","shl":"2","dj":"10","je":"20"}。

但由於實際操作中List可能包含不止一個元素,所以這里並不推薦使用List[0]。

//根據id找到數組中某個元素
functionfindById(id){
for(variinList){
if(List[i].id==id){
returnList[i];
}
}
//returnnull;//這里不return,未在數組中找到時返回undefined
}

/*
*1、編寫函數removeElement,直接編寫方法remove()可能會與某些瀏覽器沖突。
*而delete是關鍵字,表示刪除某個屬性。下面將會用到
*/
functionremoveElement(id){
varobj=findById(id);
if(!obj){
return;//未找到元素直接結束方法
}
deleteobj.id;
deleteobj.name;
deleteobj.shl;
}

/*
*2、編寫函數editElement
*/
functioneditElement(id,name){
varobj=findById(id);
if(!obj){
return;//未找到元素直接結束方法
}
obj.name=name;
}

/*
*當然還有另外一種方法去修改元素
*/
//將源對象的屬性覆蓋到目標對象
functionextend(target,source){
for(varpinsource){
if(source.hasOwnProperty(p)){
target[p]=source[p];
}
}
returntarget;
}

/*
*2、編寫函數editElement
*src={"id":"ID00001","name":"四五六七","guig":"200ml","shl":"3","dj":"10","je":"20"}
*/
functioneditElement(src){
//判斷是否是對象
f(typeofobj=="object"){
return;
}
varobj=findById(src.id);
if(!obj){
return;//未找到元素直接結束方法
}
extend(obj,src);
}


2. js裡面二維數組如何實現

定義兩層[]實現二維數組

如:

vararr2=[[1,2],[54,33]];
這里通過[]定義了二維數組.其中1,2,54,33是第二維中的數,第一維中包含的第二維分別是[1,2],[54,33]

3. js中sort()對數組排序的原理是什麼為何無法降序字母

sort的函數裡面 a 和 b 一般都是number型或是可以轉換成number的字元串,進行減操作。
然而你的內代碼中容,a b 都為字母,無法進行減法操作,所以不能進行排序。
建議你用 d.sort().reaverse();

4. js數組的隊列和堆棧是什麼意識

棧:特點就是一個先進後出的結構。隊列:特點就是一個先進先出的結構。//一般只要你滿足這個特點就可以稱之為棧或隊列。棧的應用:非常廣泛,在CPU內部就有提供棧這個機制。主要用途:函數調用和返回,數字轉字元,表達式求值,走迷宮等等。在CPU內部棧主要是用來進行子程序調用和返回,中斷時數據保存和返回。在編程語言中:主要用來進行函數的調用和返回。可以說在計算機中,只要數據的保存滿足先進後出的原理,都優先考慮使用棧,所以棧是計算機中不可缺的機制。隊列的應用:隊列主要用在和時間有關的地方,特別是操作系統中,隊列是實現多任務的重要機制。windows中的消息機制就是通過隊列來實現的。進程調度也是使用隊列來實現,所以隊列也是一個重要的機制。只要滿足數據的先進先出原理就可以使用隊列。

5. js數組幾種常見的操作方法

關於js數組的用法有很多,下面主要針對一些簡單的操作,比如合並,反轉,添加刪除等簡單的操作總結一下。

關於js數組的用法有很多,下面主要針對一些簡單的操作,比如合並,反轉,添加刪除等簡單的操作總結一下。

第一:讀取數組 for循環

方法如下:

var ay=[1,"sdsd","sdsd"]
for (var i=0;i<ay.length;i++) {

console.log("index:"+i+" "+ay[i]) //index:0 1 index:1 sdsd index:2 sdsd

}

第二:合並數組 concat

方法如下:

var arr1=['w','e','s'];

var arr2=['e','y','u'];
var arr3=arr1.concat(arr2);
console.log(arr3) //['w','e','s''e','y','u'];
第三:數組變為字元串格式 join

方法如下:

var arr1=['w','e','s'];

var arr4=arr1.join()
console.log(arr4) //w,e,s

第四:刪除最後一個元素,針對老數組是刪除最後一個,針對新數組是返回最後一個 pop

var arr6=["d","s","t"];
var arr7=arr6.pop();
console.log(arr6) //["d","s"];
console.log(arr7);// t

第五:添加最後一個元素,針對老數組最後一個元素後面添加一個元素,新數組返回元素個數 push

var arr8=["i","u","t"];

var arr9=arr8.push("k");

console.log(arr8); //["i","u","t","k"];

console.log(arr9); // 4

第六:shift() 和pop()一樣,不同的是操作的是開頭刪除的元素shift();具體操作不在展示
第七:unshiift()和push一樣,不同的是操作的是開頭添加的元素unshift();具體操作不再展示

第八:反轉數組 reverse

方法如下:

var arr1=['w','e','s'];

var arr10=arr1.reverse()

console.log(arr10) //['s','e','w'];

第九:數組排序 sort a-b正向 b-a 反向

正向

var arr11=[3,1,5,8,28]
var arr12=arr11.sort(function (a,b) {
return a-b;
})
console.log(arr12) //[1,3,5,8,28];

反向

var arr13=arr11.sort(function (a,b) {
return b-a;
})
console.log(arr13) //[28,8,5,3,1]

第十:數組截取 數組截取的方法主要有slice 和splice,另外說到截取我這里隨便也把字元串截取帶上,字元串截取的方法主要有substr 和substring

(1)slice 使用方法arr.slice(m,n);其中arr為數組,m,n為兩個參數,意思是從已有數組中返回選定的元素,截取位置均為下標,其中m必須,為起始位置,可以為負值,n為結束位置(截取位置並不包含)。

示例如下:

①只有起起始值,並且為正,默認的從起始位置一直到整個數組結束,起始下標從0開始

var arr=[2,3,5,6,8,9]
var arr1=arr.slice(1)
console.log(arr) //[2,3,5,6,8,9] 老數組是沒有變化的,下面不在列舉,都是一樣的
console.log(arr1) //[3,5,6,8,9] 只有起始參數,並且為正值,返回新數組從下標1開始截取

②只有起始值,並且為負,默認的是從起始位置一直到整個數組結束,此處沒有起始值,數組的最後一個下標是-1,比如此例,如果從-6開始取,必定是整個數組

var arr=[2,3,5,6,8,9]
var arr1=arr.slice(-1)
console.log(arr1) //[9] 只有起始參數,並且為負值,從數組尾部截取元素

③有起始值和結束值,並且為正,此處需注意下標是從小到大,比如你(3,1)肯定是取不到值的,另外截取的下標個數並不包含最後一個下標

var arr=[2,3,5,6,8,9]
var arr1=arr.slice(1,4)
console.log(arr1) //[3,5,6] 此時是從下標1開始到下標4,但是需要注意的是並不包含下標4,准確的說是1-3的下標

④有起始值和結束值,並且為負,此處需注意下秒也是從小到大,同理,比如(-1,-6)也是肯定取不到值的,另外截取的下標個數也並不包含最後一個下標

var arr=[2,3,5,6,8,9]
var arr1=arr.slice(-6,-1)
console.log(arr1) //[2,3,5,6,8]

⑤有起始值和結束值,並且正負都有

負值到0

var arr=[2,3,5,6,8,9]
var arr1=arr.slice(-1,0)

//剛剛都看到了,數組下標都是從小到大的,所以說如果正負都有的情況下,理論上應該可以取值的,比如這個例子,-1為9的小標,0為2的下標,所以取值應該為 [9],但是結果並不是這樣的
console.log(arr1) //[ ] 從這里可以看出他的結果是為空的,所以從負值到0結果是取不到的

負值到正直

var arr=[2,3,5,6,8,9]

var arr1=arr.slice(-1,2)

//那從負值到正值呢,同樣也是取不到值的

console.log(arr1) //[ ]

正直到負值

var arr=[2,3,5,6,8,9]

var arr1=arr.slice(2,-1)

//那從正直到負值,這個理論上是取不到的,但是看下結果

console.log(arr1) //[ 5,6,8] 從結果可以看出是可以取的 原理是2的下標為5,-1的下標為9,不包含結束位置下標

總結:這個方法看著可能會麻煩些(也可能被我寫的麻煩啦),比如正到負等,不知道大家都是怎麼操作,我一般用這個取值都是只截取正的,所以這個實際操作還是非常簡單的。

(2)splice 像數組中添加或者刪除元素
arr.splice(m,n,index,index1,...,indexx)
m是起始位置,n是刪除元素的個數,index是要添加的元素,在不添加元素的前提下,只有第一個參數是必須的,後面兩個都不是必須的,在需要添加元素的情況下,三個元素都是必須的,此方法和slice是不一樣的,這個返回的是被刪除的元素

示例如下:

只刪除不添加

注意看此例,是(1,2)刪除兩個,如果是(1,0),則表示刪除零個,也就是不刪除的意思,如果只有一個參數則表示從這里開始刪除,比如是(1)則為[2],當然這個也是可以取負值,但是這個和slice是不一樣的,只能起始位置取負值,因為刪除的個數不可能為負值,slice可以取(2,-1),這個就截然不同啦,但是剛剛也說啦,slice是不可以起始位置取負值,結束位置取正的,但是這個是可以的,比如(-1,0)則表示從-1開始刪除零個,結果為[2,3,5,6,8,9],(-6,2),結果為[5,6,8,9],另外這個刪除的第二個值如果寫的過大,也只是刪除從本下標到最後一個,比如(2,78)為[2,3]

var arr=[2,3,5,6,8,9]
var arr1=arr.splice(1,2)
console.log(arr) // [2,6,8,9] 注意看此處才是我們要的數組,從下標1開始刪除刪除兩個
console.log(arr1) //[3,5] 此處是我們刪除掉的數組

刪除加添加 具體的和上面的差不多,主要添加了添加元素的效果,這個也可以添加多個元素

var arr=[2,3,5,6,8,9]
var arr1=arr.splice(1,2,"il")
console.log(arr) //[2,"li",6,8,9]
console.log(arr1) //[3,5]

總結:此方法用的時候,一般也都是只取正值

(3)substr 這個是字元串的用法 用法arr.substr(m,n) m必選也可以負值 n選填,注意看這個並不是結束為止而是截取的個數

示例如下:

只有一個參數 默認從此下標開始,取後面所有的

正值

var arr="sdhgfhf"
var arr1=arr.substr(1)
console.log(arr)// "sdhgfhf"這個是不變的,下面不再列舉
console.log(arr1)//"dhgfhf" 從下標1開始取後面所有的

負值

var arr="sdhgfhf"
var arr1=arr.substr(-2)
console.log(arr1)//"hf" 從下標-2開始取後面所有的

兩個參數,從第一個下標開始,截取到下標2的長度

var arr="sdhgfhf"
var arr1=arr.substr(1,3)
console.log(arr1)//"dhg" 從下標1開始取後面所有的 同理如果為負值,比如(-6,3)則為"hjf";後面的始終為長度

總結:此方法需注意不要和數組的混淆,這個是截取長度的

(4)substring 用法arr.substring(m,n) 兩個參數,m必須,起始位置 ,n選填,截取下標的結束位置,此用法和上面slice有點類似,但是需要注意的是此方法是不支持負值的

示例如下:

只有一個參數

var arr="sdhgfhf"
var arr1=arr.substring(1)
console.log(arr1)//"dhgfhf"從下標1開始取後面所有的

兩個參數

var arr="sdhgfhf"
var arr1=arr.substring(1,3)
console.log(arr1)// "dh"從下標1開始截取到下標3,但是不包含3

總結:此方法不支持負值,只針對下標來截取的

最後,以上主要是總結的數組的一些簡單的操作方法,學無止境,繼續努力。

6. js判斷數組最大值的原理是什麼求解

var a=[1,2,3,4,5,6];

var max=0;
for(var i=0;i<a.length;i++){
if(a[i]>max){
max=a[i];
}
}
利用for循環將max和每個數去比較大小,如果有比max大的,就讓max等於這個數,最後得出來就是最大的

閱讀全文

與js數組實現原理相關的資料

熱點內容
彩視製作教程 瀏覽:766
聖墟在哪個App看免費 瀏覽:395
網路哪些不能玩 瀏覽:868
probe315使用教程 瀏覽:646
數字電位器程序 瀏覽:198
c代碼整理 瀏覽:104
網路營銷具有什麼優勢 瀏覽:378
右下角網路連接不顯示寬頻連接 瀏覽:940
ps修改tif文件 瀏覽:580
預防醫學如何轉行做大數據 瀏覽:234
pdf文件變藍 瀏覽:309
怎麼在pdf文件上面用k寶簽名 瀏覽:213
如何知道表格里數據後面有空格 瀏覽:720
gee引擎更新系統找不到指定文件 瀏覽:802
貝殼網的數據刪除了如何找回 瀏覽:509
華為榮耀6x怎麼切換網路 瀏覽:418
手機里的pdf文件在哪放 瀏覽:889
java版貪吃蛇畢業論文 瀏覽:989
微信公共號郵箱 瀏覽:415
圖片寬度代碼 瀏覽:460

友情鏈接