摘要:參數(shù)數(shù)組片段結(jié)束處的后一個(gè)元素的數(shù)組下標(biāo)。返回值一個(gè)新數(shù)組,包含從到不包括該元素指定的元素。描述方法將返回?cái)?shù)組的一部分,或者說(shuō)是一個(gè)子數(shù)組。輸出因?yàn)榇朔椒ú粫?huì)在每一個(gè)元素的基礎(chǔ)上再次執(zhí)行匹配。
array.slice(start, end)
參數(shù)start
數(shù)組片段開(kāi)始處的數(shù)組下標(biāo)。如果是負(fù)數(shù),它聲明從數(shù)組尾部開(kāi)始算起的位置。 也就是說(shuō),-1指最后一個(gè)元素,-2指倒數(shù)第二個(gè)元素,以此類推。
參數(shù)end
數(shù)組片段結(jié)束處的后一個(gè)元素的數(shù)組下標(biāo)。如果沒(méi)有指定這個(gè)參數(shù) 包含從start開(kāi)始到數(shù)組結(jié)束的所有元素。如果這個(gè)參數(shù)是負(fù)數(shù), 從數(shù)組尾部開(kāi)始算起的元素。
返回值
一個(gè)新數(shù)組,包含從start到end(不包括該元素)指定的array元素。
描述
方法slice()將返回?cái)?shù)組的一部分,或者說(shuō)是一個(gè)子數(shù)組。返回的數(shù)組包含從start 開(kāi)始到end之間的所有元素,但是不包括end所指的元素。如果沒(méi)有指定end,返回的數(shù)組包含從start開(kāi)始到原數(shù)組結(jié)尾的所有元素。
var a = [1,2,3,4,5]; a.slice(0,3); // 返回 [1,2,3] a.slice(3); // 返回 [4,5] a.slice(1,-1); // 返回 [2,3,4]
注意:該方法并不修改數(shù)組。如果想刪除數(shù)組中的一段元素,應(yīng)該使用方法Array.splice。
使用 Array#slice 拷貝數(shù)組var len = items.length; var itemsCopy = []; var i; // bad for (i = 0; i < len; i++) { itemsCopy[i] = items[i]; } // good itemsCopy = items.slice();使用 Array#slice 將類數(shù)組對(duì)象轉(zhuǎn)換成數(shù)組。
var nodesArr = Array.prototype.slice.call(document.querySelectorAll("div")); // "true" array of DIVs // 得到一個(gè)由 div 元素組成的“真正的”數(shù)組 var argsArr = Array.prototype.slice.call(arguments); // changes arguments to "true" array // 把 arguments 轉(zhuǎn)換成一個(gè)“真正的”數(shù)組Array.prototype.sort
不僅可以對(duì)簡(jiǎn)單類型的數(shù)組項(xiàng)進(jìn)行排序,可以通過(guò)屬性來(lái)排序?qū)ο?。如果哪天服?wù)器端發(fā)來(lái)一段 JSON 數(shù)據(jù),而且其中的對(duì)象需要排序
[ { name: "Robin Van PurseStrings", age: 30 }, { name: "Theo Walcott", age: 24 }, { name: "Bacary Sagna", age: 28 } ].sort(function(obj1, obj2) { // 實(shí)現(xiàn)增序排列:前者的 age 小于后者 return obj1.age - obj2.age; }); // Returns: // [ // { name: "Theo Walcott", age: 24 }, // { name: "Bacary Sagna", age: 28 }, // { name: "Robin Van PurseStrings", age: 30 } // ]用 length 屬性來(lái)截?cái)鄶?shù)組
傳對(duì)象只是傳引用,我們經(jīng)常會(huì)試圖 把一個(gè)數(shù)組清空,但實(shí)際上卻錯(cuò)誤地創(chuàng)建了一個(gè)新數(shù)組。
var myArray = yourArray = [1, 2, 3]; // 囧 myArray = []; // `yourArray` 仍然是 [1, 2, 3] // 正確的方法是保持引用 myArray.length = 0; // `yourArray` 和 `myArray`(以及其它所有對(duì)這個(gè)數(shù)組的引用)都變成 [] 了使用 push 來(lái)合并數(shù)組
使用 push 方法來(lái)合并數(shù)組:
var mergeTo = [4,5,6]; var mergeFrom = [7,8,9]; Array.prototype.push.apply(mergeTo, mergeFrom); mergeTo; // is: [4, 5, 6, 7, 8, 9]高效探測(cè)功能特性和對(duì)象屬性
很多時(shí)候我們會(huì)像下面這樣來(lái)探測(cè)瀏覽器的某個(gè)特性:
if(navigator.geolocation) { // 在這里干點(diǎn)事情 }
當(dāng)然這可以正常工作,但它并不一定有很好的效率。因?yàn)檫@個(gè)對(duì)象探測(cè)方法會(huì)在瀏覽器中初始化資源。在過(guò)去,上面的代碼片斷可能會(huì)在某些瀏覽器下導(dǎo)致內(nèi)存泄露。更好、更快的方法是檢查對(duì)象是否包含某個(gè)鍵名:
if("geolocation" in navigator) { // 在這里干點(diǎn)事情 }
鍵名檢查十分簡(jiǎn)單,而且可以避免內(nèi)存泄露。
數(shù)組的 indexOflet arr = ["orange", "2016", "2016"]; arr.indexOf("orange"); //0 arr.indexOf("o"); //-1 arr.indexOf("2016"); //1 arr.indexOf(2016); //-1
arr.indexOf(‘orange") 輸出 0 因?yàn)?‘orange" 是數(shù)組的第 0 個(gè)元素,匹配到并返回下標(biāo)。
arr.indexOf(‘o") 輸出 -1 因?yàn)榇朔椒ú粫?huì)在每一個(gè)元素的基礎(chǔ)上再次執(zhí)行 indexOf 匹配。
arr.indexOf(‘2016") 輸出 1 因?yàn)榇朔椒◤念^匹配直到匹配到時(shí)返回第一個(gè)數(shù)組元素的下表,而不是返回全部匹配的下標(biāo)。
arr.indexOf(2016) 輸出 -1 注意:這里不會(huì)做隱式類型轉(zhuǎn)換。
MDN上面的說(shuō)明:
indexOf() compares searchElement to elements of the Array using
strict equality (the same method used by the === or triple-equals operator).
這里用的是嚴(yán)格等于(===)。做類似判斷的時(shí)候多留意,數(shù)字不會(huì)轉(zhuǎn)成字符串,同理字符串也不會(huì)轉(zhuǎn)換成數(shù)字。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/81453.html
摘要:不可變對(duì)象不允許對(duì)自身內(nèi)容進(jìn)行修改。因?yàn)樗麄冋f(shuō)到不可變對(duì)象時(shí)用的是賦值,而說(shuō)到可變對(duì)象又用了的索引等方法,這根本是兩碼事?;谶@一設(shè)定,兩者在功能上的最大區(qū)別就是不可變對(duì)象可以作為字典的鍵,而可變對(duì)象不行。 前陣子我們聊了下函數(shù)的參數(shù)傳遞以及變量賦值的一些內(nèi)容:關(guān)于函數(shù)參數(shù)傳遞,80%人都錯(cuò)了 簡(jiǎn)單回顧下要點(diǎn): 1. Python 中的變量不是裝有對(duì)象的 容器 ,而是貼在對(duì)象上的 標(biāo)簽...
摘要:代碼只是狀態(tài)機(jī)圖的相關(guān)元素的一種表現(xiàn)形式,它與節(jié)點(diǎn)式或表格式的狀態(tài)機(jī)圖并無(wú)本質(zhì)不同。如上,狀態(tài)機(jī)是防止代碼失控的一劑良藥,制備完善的狀態(tài)機(jī)圖就是防止代碼失控的一種有效手段。 前言 前幾天和某某同學(xué)吃飯席間,他聊到每當(dāng)要修改老項(xiàng)目中自己寫的代碼時(shí)就痛苦不堪,問(wèn)我是不是也有同感。我覺(jué)得這應(yīng)該是不少程序猿的心聲,之所以會(huì)這樣,大致有兩個(gè)主因: 項(xiàng)目的整體設(shè)計(jì)很糟糕,只管往上堆砌各種功能、補(bǔ)...
摘要:一基礎(chǔ)接口的意義百度規(guī)范擴(kuò)展回調(diào)抽象類的意義我的前端面試經(jīng)歷百度前端掘金博主就讀于電子科技大學(xué),大三狗一枚面試是個(gè)漫長(zhǎng)的過(guò)程,從海投到收獲電話面試,一面二面三面,一個(gè)步驟出錯(cuò)那么后面就宣告終結(jié)。 一道常被人輕視的前端 JS 面試題 - 前端 - 掘金 目錄前言第一問(wèn)第二問(wèn)變量聲明提升函數(shù)表達(dá)式第三問(wèn)第四問(wèn)第五問(wèn)第六問(wèn)構(gòu)造函數(shù)的返回值第七問(wèn)最后前言 年前剛剛離職了,分享下我曾經(jīng)出過(guò)的一道...
摘要:限制表單的數(shù)據(jù)集的值必須為字符而支持整個(gè)字符集通用字符集。因此對(duì)于提交時(shí),傳輸數(shù)據(jù)就會(huì)受到長(zhǎng)度的限制。但實(shí)際各個(gè)服務(wù)器會(huì)規(guī)定對(duì)提交數(shù)據(jù)大小進(jìn)行限制,都有各自的配置。這一般用于識(shí)別該用戶是否擁有合法的操作權(quán)限,提高了數(shù)據(jù)的安全性。 這里排版可能不是太好,詳情看我的簡(jiǎn)書(shū) form表單有什么作用? 表單的作用是搜集用戶的輸入,用戶提交表單時(shí)向服務(wù)器傳輸數(shù)據(jù),從而實(shí)現(xiàn)用戶與web服務(wù)器的交互。...
閱讀 3026·2021-11-17 09:33
閱讀 1762·2021-10-12 10:13
閱讀 2614·2021-09-22 15:48
閱讀 2490·2019-08-29 17:19
閱讀 2647·2019-08-26 11:50
閱讀 1626·2019-08-26 10:37
閱讀 1790·2019-08-23 16:54
閱讀 2974·2019-08-23 14:14