JavaScript之數(shù)組

JS數(shù)組是一種特殊類型的對象

  • 在 JavaScript 中對數(shù)組使用 typeof 運算符會返回 "object"酵紫。
  • 不過數(shù)組使用數(shù)字來訪問其“元素”贤重,而沒有命名索引撕彤;
    因此源祈,如果希望元素名為字符串(文本)則應該使用對象。
    如果希望元素名為數(shù)字則應該使用數(shù)組墓塌。
var person = ["Bill", "Gates", 62];
person[0]; //Bill
  • JS數(shù)組中可以存放不同類型的變量瘟忱,包括對象、函數(shù)苫幢、數(shù)組访诱;
myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;

JS數(shù)組的屬性與方法

  • length 屬性返回數(shù)組的長度(數(shù)組元素的數(shù)目)。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.length;                       // fruits 的長度是 4
  • toString() 把數(shù)組轉(zhuǎn)換為數(shù)組值(逗號分隔)的字符串韩肝。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.toString();   // Banana,Orange,Apple,Mango
  • join() 方法也可將所有數(shù)組元素結合為一個字符串触菜,類似 toString(),但是可以規(guī)定分隔符:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.join(" * ");    // Banana * Orange * Apple * Mango
  • 向數(shù)組添加新元素的最佳方法是使用 push() 方法哀峻,并返回新數(shù)組的長度::
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x =  fruits.push("Kiwi");   //  x 的值是 5
  • pop() 方法從數(shù)組中刪除最后一個元素涡相,返回“被彈出”的值::
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.pop();      // x 的值是 "Mango"
  • shift() 方法會刪除首個數(shù)組元素,并把所有其他元素“位移”到更低的索引剩蟀,返回首個數(shù)組元素催蝗。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift();             // 返回 "Banana"
  • unshift() 方法向數(shù)組首位添加新元素,并返回新數(shù)組的長度育特。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon");    // 返回 5
  • JavaScript 數(shù)組屬于對象丙号,因此其中的元素就可以使用 JavaScript delete 運算符來刪除,但使用 delete 會在數(shù)組留下未定義的空洞。:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
delete fruits[0];           // 把 fruits 中的首個元素改為 undefined
  • 使用 splice() 能夠在數(shù)組中不留“空洞”的情況下移除元素犬缨,同時可以設置后續(xù)參數(shù)以在指定位置刪除指定數(shù)量元素后添加新元素喳魏,返回刪除項:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(0, 1);        // 刪除 fruits 中的第一個元素

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 2, "Lemon", "Kiwi"); //數(shù)組元素變?yōu)锽anana,Orange,Lemon,Kiwi 返回值為Apple,Mango
  • 使用concat() 方法合并數(shù)組,不會改變現(xiàn)有數(shù)組怀薛,返回合并后的數(shù)組刺彩,可以使用任意數(shù)量的數(shù)組參數(shù):
var arr1 = ["Cecilie", "Lone"];
var arr2 = ["Emil", "Tobias", "Linus"];
var arr3 = ["Robin", "Morgan"];
var myChildren = arr1.concat(arr2, arr3);   // 將arr1、arr2 與 arr3 連接在一起
  • slice() 方法用數(shù)組的某個片段切出新數(shù)組枝恋,返回創(chuàng)建新數(shù)組迂苛,它不會從源數(shù)組中刪除任何元素」脑瘢可接受兩個參數(shù),比如 (1, 3)就漾。
    該方法會從開始參數(shù)選取元素呐能,直到結束參數(shù)(不包括)為止。如果結束參數(shù)被省略抑堡,則會切出數(shù)組的剩余部分摆出。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3); 
  • 遍歷數(shù)組的最安全方法是使用 "for" 循環(huán),此外使用Array.foreach()可以對數(shù)組的每個元素調(diào)用相同函數(shù):
var fruits, text;
fruits = ["Banana", "Orange", "Apple", "Mango"];

text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";

function myFunction(value) {
  text += "<li>" + value + "</li>";
}
  • 沒有必要使用 JavaScript 的內(nèi)建數(shù)組構造器 new Array()首妖,使用[]偎漫。

如何識別JS數(shù)組

  • ECMAScript 5 定義了新方法 Array.isArray():
    此方案的問題在于 ECMAScript 5 不支持老的瀏覽器。
Array.isArray(fruits);     // 返回 true
  • 借助對象原型來編寫識別函數(shù):
    假如參數(shù)對象原型包含單詞 "Array"有缆,則下面的函數(shù)始終返回 true象踊。
function isArray(x) {
    return x.constructor.toString().indexOf("Array") > -1;
}
  • 假如對象由給定的構造器創(chuàng)建,則 instanceof 運算符返回 true:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits instanceof Array     // 返回 true
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棚壁,一起剝皮案震驚了整個濱河市杯矩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袖外,老刑警劉巖史隆,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異曼验,居然都是意外死亡泌射,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門鬓照,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熔酷,“玉大人,你說我怎么就攤上這事颖杏〈吭桑” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長翼抠。 經(jīng)常有香客問我咙轩,道長,這世上最難降的妖魔是什么阴颖? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任活喊,我火速辦了婚禮,結果婚禮上量愧,老公的妹妹穿的比我還像新娘钾菊。我一直安慰自己,他們只是感情好偎肃,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布煞烫。 她就那樣靜靜地躺著,像睡著了一般累颂。 火紅的嫁衣襯著肌膚如雪滞详。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天紊馏,我揣著相機與錄音料饥,去河邊找鬼。 笑死朱监,一個胖子當著我的面吹牛岸啡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赫编,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼巡蘸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了擂送?” 一聲冷哼從身側(cè)響起赡若,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎团甲,沒想到半個月后逾冬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡躺苦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年身腻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匹厘。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡嘀趟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出愈诚,到底是詐尸還是另有隱情她按,我是刑警寧澤牛隅,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站酌泰,受9級特大地震影響媒佣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜陵刹,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一默伍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧衰琐,春花似錦也糊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狗热,卻和暖如春捕捂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斗搞。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留慷妙,地道東北人僻焚。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像膝擂,于是被迫代替她去往敵國和親虑啤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容