日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Unit05: 创建和访问数组 、 数组的常用方法_1

發布時間:2023/11/27 生活经验 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unit05: 创建和访问数组 、 数组的常用方法_1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.數組:

?

程序=數據結構+算法;

數據:變量...

算法:if if-else switch 循環........

?

好的數據結構,可極大提高程序的執行“效率”;相關的多個數據應集中存貯,集中管理;

?

引用類型:值不保存在變量本地的數據類型; ************

?

數組:一組"連續的變量"組成的集合 ------- 統一起一個名字;******* 批量管理多個數據;

???? 數組是引用類型的對象;

???? 變量中保存了數組對象的地址,也成引用了數組對象;

?

如何使用:

?????? 1.創建: 4種;

????????????? 1.var 變量名=[];

???????????????????? -->創建一個空數字對象;

????????????? 2.var 變量名=[值1,值2,......值n]

???????????????????? -->創建數組同時,維數組指定初始元素;

????????????? 3.var arr=new Array();

???????????????????? -->創建一個空數字對象

???????????????????? new:創建一個新對象,并返回新對象地址;

???????????????????? Array:js中的數組類型;

???????????????????? new Array():創建一個“數組類型”的“新對象”;并返回新對象的地址;

????????????? 4.var arr=new Array(n);

???????????????????? -->創建n個元素的數組,但每個元素是空的;

???????????????????? new Array(值1,值2,......值n);

?

????????????? 找到數組:使用變量等效于直接使用變量引用的數組對象;

???????????????????? ? 在數組對象中,每個元素都有一個下標,每個元素的位置號;下標從0開始,到元素個-1結束;

????????????? 使用數組的每個元素:

???????????????????? 數組變量[i]-->獲得i位置元素中的值;數組中的變量與普通變量用法完全一樣;

?

?????? 2.賦值:數組變量[i]=新值;

?????? 3.取值:數組變量[i]

?

?????? null 和 undefined

?????? undefined:所有沒有值得變量的默認值,自動復制。

?????? null:主動釋放一個變量的對象;

?????? ????? 當使用完一個較大的對象時,“主動釋放”對象;是好的習慣;

?

?????? ????? 垃圾回收器:專門釋放對象內存的一個程序;

?????? ????????????????? 底層,后臺,伴隨當前程序,同時運行;

???????????????????? ? 引擎,會定時自動調用,垃圾回收器;

???????????????????? ? 只有一個對象,不再被任何變量引用時,才會釋放;

?

?

?????? js中的數組 VS 其他語言的數組

?????? js中的數組:下標超出不會出錯;

????????????? ?? 為不存在的下標位置“賦值”:會自動創建指定下標的新元素;

????????????? ?? 為不存在的下標位置“取值”:不會出錯,也不會增加新元素,而是返回 undefined;

?

console.log(),并不是完全順序執行;可能異步執行;

?

“賦值表達式”的結果是“等號右邊的值”;(demo1)************

?

1.length

?????? 數組是對象:封裝了一組數據,并提供對數據的操作方法;

?????? .length屬性:獲得數組中的元素個數 != 實際元素個數;

????????????? 何時使用:

????????????? 1.arr[arr.length-1]:獲得任意長度數組中的最后一個;********

????????????? 2.arr[arr.length]=新值;向數組末尾追加一個新元素;

????????????? 2.arr.length改小,會刪除length后面的項;

?

2.數組遍歷

?????? 從下標0位置開始,依次取出每個元素,反復執行相同的操作;

?????? 三要素:

?????? 1.循環條件:下標從0開始,<length;

?????? 2.循環變量:下標i,從0開始,每次遞增1,到length-1結束;

?????? 3.循環體:

?

3.關聯數組

?????? 可以自己定義下標名稱的數組;

?????? 如何創建關聯數組:

?????? 1.先創建一個空數組:

?????? ? var fbb=[];

?????? ? fbb["name"]="范冰冰";

?????? ? fbb["height"]="180cm";

?????? ? fbb["age"]=35;

?????? ????? 下標??? 值

?????? ????? 下標必須帶引號;

?????? 關聯數組中的.length屬性失效.**********

?

?????? 關聯(哈希hash)數組:下標不能重復;****

???????????????????? ? 賦值和取值都是,利用“哈希算法(算出一個數)”,快速"精確"定位某個下標的“位置”,不用遍歷;*********

?

?????? 索引數組:缺點:下標自動分配,無意義,

???????????????????? 要想按內容查找元素,只能從頭開始遍歷;

?

?????? 遍歷關聯(哈希hash)數組:

????????????? 依次遍歷arr中的元素,將當前元素的"下標"存入key中;**********

????????????? for(var key in arr){ 遍歷數組中的每個key,in前面可以放任何變量

???????????????????? key:僅得到當前元素的下標;

???????????????????? arr[key]:得到當前元素的值;

?

????????????? }

?

?????? (哈希hash)數組:保存的是key value對兒;去重復*********demo3;

?

4.冒泡排序 demo4

?

?????? var arr=[4,2,5,3,8,7,6];

?????? //遍歷數組中每個元素

?????? //下標從0開始,到<arr.length-1結束,下標++

?????? //如果當前元素>下一個位置的元素 交換兩元素的位置;

?????? //聲明變量pmt,用于交換;

?????? /******

?????? for(var i=0,tmp=0;i<arr.length-1;i++){

????????????? if(arr[i]>arr[i+1]){

???????????????????? tmp=arr[i];

???????????????????? arr[i]=arr[i+1];

???????????????????? arr[i+1]=tmp;

????????????? }

?

?????? }

?????? //第n輪:n從1開始,到<length結束;

?????? for(var i=0,tmp=0;i<arr.length-n;i++){

????????????? if(arr[i]>arr[i+1]){

???????????????????? tmp=arr[i];

???????????????????? arr[i]=arr[i+1];

???????????????????? arr[i+1]=tmp;

????????????? }

?

?????? }

?????? *******/

?????? for(var n=1;n<arr.length;n++){

????????????? for(var i=0,tmp=0;i<arr.length-n;i++){

???????????????????? if(arr[i]>arr[i+1]){

??????????????????????????? tmp=arr[i];

??????????????????????????? arr[i]=arr[i+1];

??????????????????????????? arr[i+1]=tmp;

???????????????????? }

?

????????????? }

?????? }

?????? console.log(arr);????

?

5.數組API

?????? 數組=數據+操作數據的API

?????? 1. 數組 to String:2種:

????????????? var str=arr.toString();

???????????????????? -->輸出數組中的內容,每個元素用逗號分隔

???????????????????? -->自動調用

????????????? var str=arr.join("連接符")

???????????????????? -->輸出數組中的內容,自定義元素間連接符

???????????????????? 何時使用:2種固定套路

???????????????????? 1. 將字符組成單詞:arr.join("")

???????????????????? 2. 將單詞組成句子:arr.join(" ")

?

?????? 2. 拼接和截取:*API無法直接修改原對象,而返回新對象*

????????????? 拼接:var newArr=arr.concat(另一個數組,值1,值2...)

????????????? 復制子數組:var subArr=arr.slice(starti,endi+1);

???????????????????????????????????????????????? 含頭不含尾

?

?????? 3. splice: 刪除?? 插入??? 替換

????????????? 1. 刪除:直接修改原數組對象

???????????????????? [var deleted=]arr.splice(starti,刪除個數)

???????????????????? 返回本次刪除元素組成的數組

????????????? 2. 插入:

???????????????????? arr.splice(starti,0,新值1,...)

????????????? 3. 替換:

???????????????????? arr.splice(starti,刪除個數,新值1,...)

????????????? 4. arr.reverse(); 顛倒數組中所有元素

?

?

優化:

?????? 1.問題:頻繁字符串拼接,造成內存浪費;(頻繁+=會有浪費的字符串;)

?????? ? 解決:先將要拼接的字符串放入數組;

????????????? 最后 arr.join("");

?

轉載于:https://www.cnblogs.com/mbyund/p/6406718.html

總結

以上是生活随笔為你收集整理的Unit05: 创建和访问数组 、 数组的常用方法_1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。