task 總結(jié)2— js對數(shù)組進(jìn)行各種操作的總結(jié)

1. 連接兩個(gè)數(shù)組的方法

  • concat()方法
    js的Array對象提供了一個(gè)叫concat()方法逗旁,連接兩個(gè)或更多的數(shù)組,并返回結(jié)果舆瘪。
let c = a.concat(b);    //c=[1,2,3,4,5,6]

concat()方法不改變現(xiàn)有數(shù)組片效,而是返回一個(gè)新數(shù)組。所以這里有一個(gè)問題英古,concat()方法連接a淀衣、b兩個(gè)數(shù)組后,a召调、b兩個(gè)數(shù)組的數(shù)據(jù)不變膨桥,同時(shí)會返回一個(gè)新的數(shù)組。這樣當(dāng)我們需要進(jìn)行多次的數(shù)組合并時(shí)唠叛,會造成很大的內(nèi)存浪費(fèi)只嚣,所以這個(gè)方法肯定不是最好的。

  • for循環(huán)
    大概的思路是:遍歷其中一個(gè)數(shù)組艺沼,把該數(shù)組中的所有元素依次添加到另外一個(gè)數(shù)組中册舞。
for(let  item  of  b)   {
          a.push(item);
}

代碼行數(shù)多了點(diǎn),一丟丟麻煩障般。

  • apply()方法
    感覺apply和call是javascript里面最牛的兩個(gè)方法调鲸!不管誰的東西都能拿來用!
a.push.apply(a,b); 

直接調(diào)用a.push這個(gè)函數(shù)的apply()方法挽荡,同事把b當(dāng)做參數(shù)(數(shù)組)傳入藐石,這樣這個(gè)a.push方法就會遍歷b數(shù)組中的所有元素,達(dá)到合并的效果了徐伐!

tips

  • 以上3種合并方法并沒有考慮過a贯钩、b兩個(gè)數(shù)組誰的長度更小。所以好的做法是預(yù)先判斷a办素、b兩個(gè)數(shù)組哪個(gè)更大,然后使用大數(shù)組合并小數(shù)組祸穷,這樣就減少了數(shù)組元素操作的次數(shù)性穿!
  • 有時(shí)候我們不希望原數(shù)組(a、b)改變雷滚,這時(shí)就只能使用concat了需曾。

2. 刪除數(shù)組中的重復(fù)元素只保留一個(gè)

  • 第一種思路:遍歷要刪除的數(shù)組arr,把元素放入另一個(gè)數(shù)組tmp中,在判斷該元素在arr中不存時(shí)才允許放入tmp中
    for...of語句
    indexOf()方法
let arr = [1, 2, 2, 3, 1, 2, 4];
function noRepeat(arr) {
        let tmp = [];
        for(let item of arr) {
                    if(tmp.indexOf(item) === -1) {
                                tmp.push(item);
                    }
        }
        return tmp;
}
  • 第二種思路: 把目標(biāo)數(shù)組arr的元素值和鍵的位置調(diào)換 自動就把重復(fù)的元素給刪除掉了呆万,感覺這種方法有點(diǎn)繞商源,還是上面那種好理解一點(diǎn)
let student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
function unique(arr){
         let tmp = [];
         for(let item of arr){
                tmp[item] = 1;
         }
//再把鍵和值的位置再次調(diào)換
let tmparr = [];
for(let n in tmp){
         tmparr.push(n);
}
return tmparr;
}

3. 判斷變量是否為數(shù)組的方法

image.png

數(shù)組就是那個(gè)任何其他對象,所以如果用typeof array 的話谋减,返回值會是"object"牡彻,typeof比較適合用來判斷基本類型

object instanceof constructor

object是你要檢測的對象, constructor是某個(gè)構(gòu)造函數(shù)(比如Array)出爹,返回值是true or false庄吼,例子:

let arr = [1,23,4];
console.log(arr instanceof Array);     //true
  • 原型鏈方法
let arr = [1,23,4];
console.log(arr.__proto__.constructor == Array);    //true
console.log(arr.constructor == Array);     //true 這兩段代碼是一樣的

這種方法看上去很萬無一失并且高大上,除了萬惡的IE早期的兼容性問題

  • isArray()方法
    這個(gè)方法是Array的內(nèi)置函數(shù)严就,用于判斷傳遞的值是不是一個(gè)Array总寻。如果是返回true,否則false。
Array.isArray([1,2,3]);         //true

假如不存在 Array.isArray(),則在其他代碼之前運(yùn)行下面的代碼將創(chuàng)建該方法最欠。

if (!Array.isArray) {
       Array.isArray = function(arg) {
       return Object.prototype.toString.call(arg) === '[object Array]';
  };
}

4. 數(shù)字和字符串之間的相互轉(zhuǎn)換
1) 數(shù)字轉(zhuǎn)成字符串

  • 簡單方法
let num = 19;
console.log(num + '');            //'19'

很巧妙的方法只磷,直接利用字符串拼接

let num = 39;
console.log(String(num));         // '39'
  • toString()方法
    toString() ()中放入的數(shù)字可以順帶轉(zhuǎn)換成別的進(jìn)制形成的字符串,如果沒指定括號里的基數(shù)叽躯,默認(rèn)就是10,例如:
console.log((10).toString());          //'10'
console.log((10).toString(2));        //'1010'
  • toFixed()方法
    toFixed() 方法其實(shí)是用來使用定點(diǎn)表示法來格式化一個(gè)數(shù)的。不過它的返回值是一個(gè)數(shù)值的字符串表現(xiàn)形式旁理,所以也可以用來數(shù)字轉(zhuǎn)換字符串了,()內(nèi)表示你要截取的小數(shù)后的位數(shù)我磁,例如:
let num = 12345.6789;
num.toFixed();           //"12346",四舍五入孽文,不包括小數(shù)位
num.toFixed(1);           //"12345.7"  四舍五入
num.toFixed(6);           //"12345.678900"  用0填充

2) 字符串轉(zhuǎn)成數(shù)字

let str = '15';
console.log(Number(str));            //15
  • parseFloat() & parseInt()
    parseInt() 函數(shù)解析一個(gè)字符串參數(shù),并返回一個(gè)指定基數(shù)的整數(shù)
    *parseFloat()函數(shù)返回一個(gè)浮點(diǎn)數(shù)夺艰,它只有一個(gè)參數(shù)
let str = '1010';
console(parseInt(str, 10));          //10
let strr = '9.678';
console(parseFloat(strr));            //9.678

5. 數(shù)字取整

  • parseInt()
    丟棄小數(shù)部分芋哭,保留整數(shù)位
  • Math.ceil()
    向上取整,只要有小數(shù)位郁副,就給整數(shù)位加1
  • Math.floor()
    向下取整减牺,和parseInt在取整上的作用差不多
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市存谎,隨后出現(xiàn)的幾起案子拔疚,更是在濱河造成了極大的恐慌,老刑警劉巖既荚,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稚失,死亡現(xiàn)場離奇詭異,居然都是意外死亡恰聘,警方通過查閱死者的電腦和手機(jī)句各,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門吸占,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凿宾,你說我怎么就攤上這事矾屯。” “怎么了初厚?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵件蚕,是天一觀的道長。 經(jīng)常有香客問我惧所,道長骤坐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任下愈,我火速辦了婚禮纽绍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘势似。我一直安慰自己拌夏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布履因。 她就那樣靜靜地躺著障簿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栅迄。 梳的紋絲不亂的頭發(fā)上站故,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機(jī)與錄音毅舆,去河邊找鬼西篓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛憋活,可吹牛的內(nèi)容都是我干的岂津。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼悦即,長吁一口氣:“原來是場噩夢啊……” “哼吮成!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辜梳,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤粱甫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后冗美,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魔种,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年粉洼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了节预。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡属韧,死狀恐怖安拟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宵喂,我是刑警寧澤糠赦,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站锅棕,受9級特大地震影響拙泽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裸燎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一顾瞻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧德绿,春花似錦荷荤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至个粱,卻和暖如春古毛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背都许。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工稻薇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梭稚。 一個(gè)月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓颖低,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弧烤。 傳聞我的和親對象是個(gè)殘疾皇子忱屑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

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

  • Javascript有很多數(shù)組的方法,有的人有W3C的API暇昂,還可以去MDN上去找莺戒,但是我覺得API上說的不全,M...
    頑皮的雪狐七七閱讀 4,095評論 0 6
  • js基礎(chǔ)篇(三)——DOM的各種操作js基礎(chǔ)篇(二)——字符串的各種操作 1. 創(chuàng)建數(shù)組 創(chuàng)建一個(gè)數(shù)組急波,有三種方法...
    hanyuntao閱讀 1,625評論 0 14
  • Ruby 數(shù)組(Array) Ruby 數(shù)組是任何對象的有序整數(shù)索引集合从铲。數(shù)組中的每個(gè)元素都與一個(gè)索引相關(guān),并可通...
    黑夜的眸閱讀 1,097評論 0 0
  • 凡事成與不成關(guān)鍵在于你是否對這件事真的用心澄暮,如果你真的用心了名段,那么一定有著“非凡”的結(jié)果阱扬,在這個(gè)基礎(chǔ)之上也許你能夠...
    福爾摩星閱讀 429評論 0 0
  • 《騰訊傳1998-2016:中國互聯(lián)網(wǎng)公司進(jìn)化論》 吳曉波 一直都想不出要怎樣給一本傳記寫書評,在我看來伸辟,...
    南呂依依閱讀 532評論 0 0