Javascript查漏補缺-數組

最近搜尋資料時候發現了幾張js知識導圖,閑來無事就當溫習了一下


一、創建方法

這幾個使用的是Array構造函數
空數組: var obj = new Array();
指定長度的數組:var obj = new Array(20);
指定元素的數組:var obj = new Array("red","blue","black");
另一種是使用數組字面量表示法:
三個字符串的數組:var obj = ["red","blue","green"];
空數組:var name = [];

二、基本操作

存取數組元素:
1)、單維數組:數組名[下標所索引] =》 obj[2];
2)、多維數組:數組名[外層數組下標][內層數組下標] =》obj[2][3]
增加數組:使用“【】”運算符指定一個新下標 =》 obj[3] = "yellow"
刪除數組:delete數組名[下標] =》 delete obj[3];(刪除之后原來元素會變成undefined)
遍歷數組:for(var 數組元素變量in數組)

三、數組屬性

引用數組對象的構造函數:constructor
數組的長度:length
通過增加屬性和方法擴展數組定義:prototype

四、方法

1)、添加
push():在數組末尾添加數組 =》 arr.push("yellow","pupple")
unshift():在數組頭部添加元素 =》 arr.unshift("green")
concat():合并兩個數組 =》 arr1.concat(arr2)

2)、刪除
pop():刪除并返回數組的最后一個元素 =》 arr.pop()
shift():刪除并返回數組的第一個元素 => arr.shift()

3)、子數組
splice(): 注意:此方法會直接修改數組本身!
PS:該方法可接受三個參數:
index(必需。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。)
howmany(必需。要刪除的項目數量。如果設置為 0,則不會刪除項目。)
item1, ..., itemX( 可選。向數組添加的新項目)

刪除任意數量的項:(要刪除的起始下標,要刪除的項數)=》arr.splice(1,2)
表從第一個開始,刪除兩個元素,包括第一個

在指定位置插入指定項:(起始下標,0[不刪除任何元素],要插入的項) =》arr.splice(2,0,"yellow","red")
表示在索引為2的地方插入后面兩個元素

替換任意數量的項:(起始下標,要刪除的項數,要插入的項)=》arr.splice(0,2,"6")
表示從索引為0的開始,選取兩個元素,替換成后面的元素

slice(): 注意:此方法不會修改數組本身!
從已有數組中選取部分元素構成新數組
PS:該方法可接受兩個參數:
start(必需。規定從何處開始選取。如果是負數,那么它規定從數組尾部開始算起的位置。也就是說,-1 指最后一個元素,-2 指倒數第二個元素,以此類推。)
end(可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那么切分的數組包含從start到數組結束的所有元素。如果這個參數是負數,那么它規定的是從數組尾部開始算起的元素。)
=》arr.slice(0,2)
表示從索引0開始,取兩個元素,注意包含第0個元素但不包含第2個元素

4)、數組排序
reverse()
顛倒數組元素的順序=》arr.reverse()

sort()
排序數組,默認的話,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。
比較數字的話如下:

<script type="text/javascript">
function sortNumber(a,b)
{
    return a - b
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort(sortNumber))

</script>

5)、數組轉換
toString() 轉換為字符串并返回
toLocaleString轉換為本地格式字符串并返回
join()用指定分隔符分割數組并轉換為字符串

6)、位置方法
indexOf && lastIndexOf
一個從數組的起始位置開始查找,一個從數組的結束位置開始查找
接受兩個參數:

  • 要查找的項
  • 表示查找起點的索引位置
    =》[2,3,4,5].indexOf(2)
    如果查找得到則返回該元素的索引,找不到返回-1

7)、迭代方法
every
該方法用于檢測數組所有元素是否都符合條件(通過函數提供)

  • 如果數組中檢測到有一個元素不滿足,則整個表達式都返回false,并且剩余的元素不會檢測
  • 如果所有元素都滿足條件,則返回true
    例子:
var ages = [32,33,16,40]
function checkAdult(age){
    return age >= 18;
}
ages.every(checkAdult) //false

filter
對數組中的每個元素都執行一次指定的函數(callback),并且創建一個新的數組,該數組元素是所有回調函數執行時返回值為 true 的原數組元素。

//過濾掉小于 10 的數組元素:

//代碼:
function isBigEnough(element, index, array) {
    return (element >= 10);
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// 12, 130, 44
//結果:[12, 5, 8, 130, 44].filter(isBigEnough) : 12, 130, 44 

foreach
遍歷

//打印數組內容:

function printElt(element, index, array) {
    document.writeln("[" + index + "] is " + element + "<br />");
}
[2, 5, 9].forEach(printElt);
// Prints:
// [0] is 2
// [1] is 5
// [2] is 9
//結果:
//[0] is 2
//[1] is 5
//[2] is 9

map
返回每次函數調用的結果數組

//將所有的數組元素轉換為大寫:

var strings = ["hello", "Array", "WORLD"];
function makeUpperCase(v)
{
    return v.toUpperCase();
}
var uppers = strings.map(makeUpperCase);
// uppers is now ["HELLO", "ARRAY", "WORLD"]
// strings is unchanged
//結果:["hello", "Array", "WORLD"].map(makeUpperCase) : HELLO, ARRAY, WORLD 

some
有一項返回true,則返回true

//檢查是否有數組元素大于等于10:

function isBigEnough(element, index, array) {
    return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true
//結果:
//[2, 5, 8, 1, 4].some(isBigEnough) : false 
//[12, 5, 8, 1, 4].some(isBigEnough) : true 

8)、縮小方法
reduce 從數組起始位開始遍歷
reduceRight 從數組末尾開始遍歷
常見場景疊加

var sum = [0, 1, 2, 3].reduce(function(acc, val) {
  return acc + val;
}, 0);
// sum is 6
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內容