成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

js幾個(gè)常被忽略的基礎(chǔ)知識(shí)點(diǎn)

PascalXie / 2493人閱讀

摘要:參數(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ù)組的 indexOf
let 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

相關(guān)文章

  • 可變對(duì)象與不可變對(duì)象

    摘要:不可變對(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)簽...

    jay_tian 評(píng)論0 收藏0
  • 代碼失控與狀態(tài)機(jī)(上)

    摘要:代碼只是狀態(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ǔ)...

    cucumber 評(píng)論0 收藏0
  • 前端面試 - 收藏集 - 掘金

    摘要:一基礎(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ò)的一道...

    lpjustdoit 評(píng)論0 收藏0
  • 有關(guān)form表單常被問(wèn)到識(shí)點(diǎn)

    摘要:限制表單的數(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ù)器的交互。...

    kohoh_ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<