Javascript之高級數(shù)組API的使用實例
JS中我們可以根據(jù)需求新建新的對象解決問題的同時,也有一些常用的內(nèi)置對象供我們使用,我們稱之為API,本篇文章只是對數(shù)組部分進(jìn)行了練習(xí)。
例一:偽數(shù)組,不能修改長短的數(shù)組(所以沒辦法清零),可以修改元素,代碼實現(xiàn)如下:
<script> fn(1,2); fn(1,2,3,4,5,6); fn(1,2,4,5,7,9,4); function fn(a,b){ arguments[0]=0; console.log(arguments); arguments.push(1); console.log(arguments instanceof Array); console.log(arguments.length);//實參個數(shù) console.log(fn.length);//形參個數(shù) console.log(arguments.callee);//整個函數(shù),包括注釋 } </script>
偽數(shù)組打印的是實參,而普通函數(shù)調(diào)用打印的是形參,并且打印它的函數(shù)類型,我們發(fā)現(xiàn)它的類型顯示并不是數(shù)組。
例二:將一個字符串?dāng)?shù)組輸出為|分割的形式,比如“劉備|張飛|關(guān)羽”。使用兩種方式實現(xiàn)
方法一:不利用內(nèi)置對象,進(jìn)行字符串拼接,由于第一個元素前沒有特殊符號,首先將其賦值后,循環(huán)從下一個元素開始遍歷
<script> var arr=["劉備","張飛","關(guān)羽"]; var str=arr[0]; for(var i=1;i<arr.length;i++){ str+="|"+arr[i]; } console.log(str); </script>
方法二:使用內(nèi)置對象直接改變間隔符號
<script> var arr=["劉備","張飛","關(guān)羽"]; var str=arr.join("|"); console.log(str); </script>
兩種方法進(jìn)行對比,我們發(fā)現(xiàn)第一種方法使之產(chǎn)生了大量內(nèi)存,導(dǎo)致內(nèi)存浪費情況,從此看出對我們來說內(nèi)置對象的使用幫我們解決了內(nèi)存浪費的缺點。
例三:將一個字符串?dāng)?shù)組的元素的順序進(jìn)行反轉(zhuǎn)。["a","b","c","d"] ->["d","c","b","a"]。使用兩種種方式實現(xiàn)。
方法一:之前文章介紹過的方法
<script> var str1=["a","b","c","d"]; var str2=[]; for(var i=0;i<str1.length;i++){ str2[str1.length-i-1]=str1[i]; } console.log(str2); </script>
方法二:直接使用內(nèi)置對象reverse()
解決
<script> var str1=["a","b","c","d"]; console.log(str1.reverse()); </script>
例四:工資的數(shù)組[1500,1200,2000,2100,1800],把工資超過2000的刪除
使用內(nèi)置對象filter()
實現(xiàn)題目需求。
<script> var arr=[1500,1200,2000,2100,1800]; var arr1=arr.filter(function(element,index,array){ if(element<=2000){ return true; } return false; }) console.log(arr1); </script>
例五:["c","a","z","a","x","a"]找到數(shù)組中每一個元素出現(xiàn)的次數(shù)
由于題目給出字符形式,讓我們求出的相應(yīng)字符的個數(shù)為數(shù)字形式,這讓我們應(yīng)用json更方便問題解決,將題目給出的字符作為“鍵”,將次數(shù)作為“鍵值”,來判斷數(shù)組中的元素,在json中是否存在屬性值,如果存在,在原有基礎(chǔ)上加上1;如果不存在直接賦值為1。
<script> var arr=["c","a","z","a","x","a"]; var json={}; for(var i=0;i<arr.length;i++){ if(json[arr[i]]!==undefined){ json[arr[i]]+=1; }else{ json[arr[i]]=1; } } console.log(json); </script>
例六:編寫一個方法 去掉一個數(shù)組的重復(fù)元素
方法一:新建數(shù)組,將原數(shù)組第一個元素push進(jìn)入新數(shù)組。遍歷原數(shù)組的每一個元素使之在新數(shù)組每一個元素中都不存在(嵌套兩層for循環(huán)),就push進(jìn)入原數(shù)組,否則就跳出新數(shù)組循環(huán),進(jìn)入原數(shù)組的下一個元素循環(huán)。
<script> var arr=[3,2,4,5,5,3,5,568,4,21,7]; var arr1=fn(arr); function fn(array){ var arr2=[]; arr2.push(array[0]); abc:for(var i=0;i<array.length;i++){ for(var j=0;j<arr2.length;j++){ if(arr2[j]==array[i]){ continue abc; } } arr2.push(array[i]); } return arr2; } console.log(arr1); </script>
方法二:創(chuàng)建一個新數(shù)組,循環(huán)遍歷,只要新數(shù)組中有舊數(shù)組的值,就不要在添加。每次都要判斷新數(shù)組中是否有舊數(shù)組的值,保證舊數(shù)組的元素和新數(shù)組中每一個都不相等,則賦值給新數(shù)組的下一元素的值。
<script> var arr=[1,2,3,4,5,2,3,4]; console.log(arr); console.log(fn(arr)); function fn(array){ var newArr=[]; for(var i=0;i<array.length;i++){ var bool=true; for(var j=0;j<newArr.length;j++){ if(array[i]===newArr[j]){ bool=false; } } if(bool){ newArr[newArr.length]=array[i]; } } return newArr; } </script>
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
網(wǎng)頁前臺通過js非法字符過濾代碼(罵人的話等等)
項目中如果需要過濾非法字符(你不想用戶輸入的任何字符)的話在前臺可以使用js過濾,同樣可以提高用戶體驗,以前都是后臺過濾,這樣雙重過濾用戶體驗更好。2010-05-05