成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

詳解JavaScript數(shù)組(一)

zhongmeizhi / 862人閱讀

摘要:數(shù)組不接受參數(shù),從數(shù)組末尾移除最后一項返回數(shù)組最后一項。隊列方法先進先出移除數(shù)組中的第一個項,并返回該項。接收任意個參數(shù),在數(shù)組前添加任意個項并返回新數(shù)組的長度?;诋?dāng)前數(shù)組中的一或多個項創(chuàng)建新數(shù)組,不會影響原來數(shù)組。

一. 定義方法

有兩種方式可以定義一個數(shù)組,

構(gòu)造函數(shù)法

使用Array構(gòu)造函數(shù)創(chuàng)建數(shù)組,在使用Array構(gòu)造函數(shù)時可以省略new操作符。

 var arr = Array();
 var arr = new Array(); // 創(chuàng)建一個空數(shù)組

 var arr = Array(20);
 var arr = new Array(10); // 創(chuàng)建一個 length 長為 10 的數(shù)組

 var arr = Array("1", "2", "3");
 var arr = new Array("1", "2", "3"); // 創(chuàng)建一個包含該三項的數(shù)組
對象字面量表示法
var arr=["1", "2", "3"];

注意:數(shù)組最多能夠包含4294967295個項

二. 數(shù)組檢測

這篇文章有很詳細的說明?!对贘avaScript中,如何判斷數(shù)組是數(shù)組?》

三. 數(shù)組方法 1.轉(zhuǎn)換方法

所有對象都具有toString()、 toLocaleString()、 valueOf() 方法;要注意它們之間的區(qū)別

var a=[1,2];
console.log(a.toString()); 
console.log(a.toLocaleString());//1,2
console.log(a.valueOf()); //[1, 2]

valueOf:返回數(shù)組本身

toString():把數(shù)組轉(zhuǎn)換為字符串,并返回結(jié)果,每一項以逗號分割

toLocalString():結(jié)果與toString()返回的結(jié)果相同,但是調(diào)用的是toLocalString方法。

LocaleString()會根據(jù)你機器的本地環(huán)境來返回字符串,而toString()保持著統(tǒng)一的值。

var number = 1337;
var date = new Date();
var myArr = [number, date, "foo"];
var str = myArr.toLocaleString(); 
console.log(str); //1337,2016/8/25 下午3:06:46,foo

var number = 1337;
var date = new Date();
var myArr = [number, date, "foo"];
var str = myArr.LocaleString()會根據(jù)你機器的本地環(huán)境來返回字符串; 
console.log(str); //1337,Thu Aug 25 2016 15:07:43 GMT+0800 (中國標(biāo)準時間),foo

使用join()方法,可以設(shè)置分隔符

String.join("|");

備注:需要說明一下alert()方法接收字符串參數(shù),在后臺調(diào)用toString()方法,但對于LocaleString()會調(diào)用LocaleString()方法。

2.棧方法

棧(LIFO,后進先出)

a.push()

接受任意數(shù)量的參數(shù),逐個推入數(shù)組末尾,并返回修改后數(shù)組的長度。

var a=[1,2];
var b=a.push(3,4);
console.log(b); //4 數(shù)組[1,2,3,4]
b.pop()

不接受參數(shù),從數(shù)組末尾移除最后一項,返回數(shù)組最后一項。

var a=[1,2];
var b=a.pop();
console.log(b); //2
3.隊列方法

LIFO(先進先出)

a.shift()

移除數(shù)組中的第一個項,并返回該項。

var a=[1,2];
var b=a.shift();
console.log(b); //1
b.unshift()

unshift() 接收任意個參數(shù),在數(shù)組前添加任意個項并返回新數(shù)組的長度。備注:IE7及以下返回undefined。

var a=[1,2];
var b=a.unshift(3,4);
console.log(b); //4, 數(shù)組為[3,4,1,2]
4.重排序方法 a. sort()

使用時每個數(shù)組項調(diào)用自身toString()方法轉(zhuǎn)為字符串,再按字符編碼升序(非數(shù)值大?。┡帕袛?shù)組項,因此會出現(xiàn)一種尷尬的事情:

var a=[1,2,3,10,5];
a.sort(); //[1, 10, 2, 3, 5],字符編碼排序,10排在1后面

這時我們可以傳入一個比較函數(shù)。

function compare(a,b){
  if(ab){
      return 1;
    }else{
      return 0;
    }
}
var a=[1,2,3,10,5];
a.sort(compare); //[1, 2, 3, 5, 10]

對于數(shù)值類型或通過valueOf()方法返回數(shù)值類型的對象數(shù)組項,可以使用下面這個函數(shù):

function compare(a,b){
  return a-b;  
}
b.reverse()

反轉(zhuǎn)數(shù)組。

var a=[1,2,3,10,5];
a.reverse(); //[5, 10, 3, 2, 1]
5.操作方法 a.concat()

合并數(shù)組,傳入數(shù)組或者參數(shù),不會影響原來的數(shù)組。

var a=[1,2,3,4,5];
var a1=[6,7]
var b=a.concat();
var c=a.concat(a1);
var d=a.concat(a1,8,9);
console.log(a);//[1,2,3,4,5]
console.log(b);//[1,2,3,4,5]
console.log(c);//[1,2,3,4,5,6,7]
console.log(d);//[1,2,3,4,5,6,7,8,9]
b.slice()

基于當(dāng)前數(shù)組中的一或多個項創(chuàng)建新數(shù)組,不會影響原來數(shù)組。

無參數(shù):返回原數(shù)組

一個參數(shù):返回從該參數(shù)指定位置開始到數(shù)組末尾的所有項

兩個參數(shù):返回起始和結(jié)束之間的項

var a=[1,2,3,4,5];
var b=a.slice();
var c=a.slice(1);
var d=d.slice(1,4);
console.log(a);//[1,2,3,4,5]
console.log(b);//[1,2,3,4,5]
console.log(c);//[2,3,4,5]
console.log(d);//[2,3,4]
c.splice()

可以刪除、插入、替換;返回刪除的項組成的數(shù)組,對原數(shù)組造成影響
刪除:指定2個參數(shù),要刪除的第一項的位置和要刪除的項數(shù)

var a=[1,2,3,4,5];
var b=a.splice(3,2); //a變?yōu)閇1, 2, 3]

插入:提供3個參數(shù),起始位置、0、要插入的項

var a=[1,2,3,4,5];
var b=a.splice(3,0,2); //a變?yōu)閇1, 2, 3, 2, 4, 5]

替換:指定3個參數(shù),起始位置、要刪除的項數(shù)、要插入的項數(shù)(可多項)

var a=[1,2,3,4,5];
var b=a.splice(3,1,2); //a變?yōu)閇1, 2, 3, 2, 5]
6.位置查找

indexOf()lastIndexOf(),接收兩個參數(shù):要查找的項和(可選的)表示起點位置的索引,都返回要查找的項在數(shù)組中的位置。

7.迭代方法

every():對數(shù)組的每一項運行給定的函數(shù),如果該函數(shù)對每一項運行都返回 true,則返回 true,對原函數(shù)無影響

some():對數(shù)組中的每一項運行給定的函數(shù),如果該函數(shù)對任一項返回 true,則返回 true,對原函數(shù)無影響

filter():對數(shù)組的每一項運行給定函數(shù),返回該函數(shù)會返回true的項組成的數(shù)組

forEach():對數(shù)組中的每一項運行給定函數(shù),無返回值

map():對數(shù)組中的每一項運行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組

8.縮小方法

reduce()和reduceRight()
傳入四個參數(shù):前一個值、當(dāng)前值、項的索引、數(shù)組對象本身。這個函數(shù)返回的任何值都會作為第一個參數(shù)自動傳給下一項,第一次迭代發(fā)生在數(shù)組的第二項上。

var numbers = [1, 2, 3, 4, 5];
var sum= numbers.reduce(function (pre, cur, index, arr) {
  return pre + cur;
})
alert(sum); // 15
四.參考資料

《JavaScript高級程序設(shè)計》

《JavaScript權(quán)威指南》

在JavaScript中,如何判斷數(shù)組是數(shù)組?

Object.prototype.toLocaleString()

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80196.html

相關(guān)文章

  • 【連載】前端個人文章整理-從基礎(chǔ)到入門

    摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現(xiàn)在已經(jīng)一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...

    madthumb 評論0 收藏0
  • 詳解js面向?qū)ο缶幊?/b>

    摘要:看下面一個例子優(yōu)點使用構(gòu)造器函數(shù)的好處在于,它可以在創(chuàng)建對象時接收一些參數(shù)。按照慣例,構(gòu)造函數(shù)的函數(shù)名應(yīng)始終以一個大寫字母開頭,以區(qū)分普通函數(shù)。返回該對象的源代碼。使您有能力向?qū)ο筇砑訉傩院头椒ā? 基本概念 ECMA關(guān)于對象的定義是:無序?qū)傩缘募?,其屬性可以包含基本值、對象或者函?shù)。對象的每個屬性或方法都有一個名字,而每個名字都映射到一個值。 類 在現(xiàn)實生活中,相似的對象之間往往都有...

    lolomaco 評論0 收藏0
  • JavaScript 特殊對象 Array-Like Objects 詳解

    摘要:很簡單,不是數(shù)組,但是有屬性,且屬性值為非負類型即可。至于屬性的值,給出了一個上限值,其實是感謝同學(xué)指出,因為這是中能精確表示的最大數(shù)字。如何將函數(shù)的實際參數(shù)轉(zhuǎn)換成數(shù)組 這篇文章拖了有兩周,今天來跟大家聊聊 JavaScript 中一類特殊的對象 -> Array-Like Objects。 (本文節(jié)選自 underscore 源碼解讀系列文章,完整版請關(guān)注 https://githu...

    zhaofeihao 評論0 收藏0
  • javascript reduce詳解及應(yīng)用

    摘要:循環(huán)數(shù)組每一項數(shù)組下標(biāo)當(dāng)前調(diào)用數(shù)組本身可選初始值,作為回調(diào)函數(shù)第一個參數(shù)的默認值,也是每次回調(diào)的返回值,見代碼首頁問題轉(zhuǎn)化為數(shù)組首頁問題轉(zhuǎn)化后效果這個栗子來自配置路由時遇到的,當(dāng)時也是優(yōu)化了好幾個版本。 reduce callback(一個在數(shù)組中每一項上調(diào)用的函數(shù),接受四個參數(shù):)previousValue(上一次調(diào)用回調(diào)函數(shù)時的返回值,或者初始值)currentValue(當(dāng)前正...

    Cruise_Chan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<