數(shù)組對象
關(guān)于數(shù)組對象汰具,在JS中數(shù)組是一個(gè)非常重要的組成部分卓鹿,可以幫助我們解決很多實(shí)際問題,可以用來存放大量數(shù)據(jù)留荔,實(shí)現(xiàn)很多功能吟孙。
創(chuàng)建數(shù)組的方式:一、字面量方式創(chuàng)建存谎,二拔疚、構(gòu)造函數(shù)創(chuàng)造(構(gòu)建函數(shù)創(chuàng)造時(shí),前面需要new關(guān)鍵字既荚,后接函數(shù)名稚失,函數(shù)名首字母大寫)。
同樣的恰聘,為了方便使用者句各,手冊中提供了很多方法;可以直接拿來使用晴叨。indexof方法凿宾,此方法經(jīng)常用來對數(shù)組進(jìn)行去重處理,判斷一個(gè)數(shù)組中是否有這個(gè)元素兼蕊,如果值為-1初厚,說明沒有值。棧方法孙技。push(在最后添加一個(gè)元素)产禾;pop(刪除最后一個(gè)元素);和它功能相似的有shift牵啦,unshift(在第一元素之前添加一個(gè)元素)亚情;splice()方法 ,刪除哈雏,添加楞件,替換衫生,此方法可以實(shí)現(xiàn)多個(gè)功能。sort()方法土浸,對字符串進(jìn)行排序罪针,按照從小到大的順序。但通常需要自已實(shí)現(xiàn)栅迄。因?yàn)榇朔椒J(rèn)按ASCII碼排序站故。
兩種常見的排序方式
一、冒泡排序?
??<script>
????????????var?arr=[1,33,3,8,10,56,39]
????????????for(var?i=0;i<arr.length;i++){
????????????????for(var?j=0;j<arr.length-i;j++){
????????????????????if(arr[j]>arr[j+1]){
????????????????????????var?temp=arr[j];
????????????????????????arr[j]=arr[j+1];
????????????????????????arr[j+1]=temp;
????????????????????}
????????????????}
????????????}
????????????console.log(arr);
????</script>
二毅舆、選擇排序
<script>
????????var?arr=[12,13,32,56,78,46,83,23,5,7]
????????//?function?sort(){
????????????for(var?i=0;i<arr.length;i++){
????????????????for(var?j=i+1;j<arr.length;j++){
????????????????????if(arr[i]>arr[j]){
????????????????????????var?temp=arr[i];
????????????????????????arr[i]=arr[j];
????????????????????????arr[j]=temp;
????????????????????}
????????????????}
????????????}
????????//?return;
????????//?}
????????console.log(arr);
數(shù)組去重的方法
一西篓、
?//1.利用indexOf方法
????????//?var?arr=[];
????????var?arr1?=?[12,?34,?1,?2,?3,?4,?6,?4,?3,?5,?1,?1,?34]
????????//?for(var?i=0;i<arr1.length;i++){
????????//?????if(arr.indexOf(arr1[i])==-1){
????????//?????????arr.push(arr1[i])
????????//?????}
????????//?}
????????//?console.log(arr);
二?
?//2.利用for循環(huán)遍歷數(shù)組
????????for?(var?i?=?0;?i?<?arr1.length;?i++)?{
????????????//
????????????for?(var?j?=?i?+?1;?j?<?arr1.length;?j++)?{
????????????????if?(arr1[i]?==?arr1[j])?{
????????????????????arr1.splice(j,?1)
????????????????????j--;
????????????????}
????????????}
????????????//??return;
????????}
????????console.log(arr1);
關(guān)于數(shù)組中的其他方法
jion方法:將數(shù)組拼接成字符串。此方法只接受一個(gè)參數(shù)憋活,用做分隔符的字符串
reverse方法:此方法會反轉(zhuǎn)數(shù)組元素的順序
slice方法:截取數(shù)組岂津,數(shù)組.slice(起始下標(biāo),結(jié)束下標(biāo))悦即,不會影響原數(shù)組
數(shù)組的迭代方法
every:針對數(shù)組元素做一些判斷吮成,如果結(jié)果都為true,則返回結(jié)果為true
some:針對數(shù)組元素做一些判斷辜梳,如果結(jié)果有一個(gè)為true粱甫,則返回的結(jié)果為true
filter:針對數(shù)組元素做一些判斷,滿足條件的元素作瞄,會組成一個(gè)新的數(shù)組茶宵,并且返回
map:返回一個(gè)新的數(shù)組
ofrEach:沒有返回值,就是一個(gè)簡單的循環(huán)宗挥。
代碼示例:
?<script>
????????var?arr?=?[100,?98,?77,?66,?55,?44,?33];
????????//?var?str=arr.every(function(item){
????????//?????return?item>60;
????????//?})//every方法乌庶。判斷是否全部大于60,只要有一個(gè)不滿足契耿,則輸出false
????????//?????????var?str=arr.forEach(function(item){
????????//?//?console.log(arr);
????????//?????????})
????????//?var?str?=arr.filter(function(item){//過濾掉滿足條件的元素瞒大,生成一個(gè)新的數(shù)組
????????//?????return?item>60;
????????//?})
????????//?var?str?=?arr.some(function(item){//只要其中有一個(gè)元素滿足條件,則輸出ture
????????//?????return?item>60
????????//?})
????????//?var?str=arr.map(function(item){//對數(shù)組中的元素進(jìn)行批量處理
????????//?????return?item+60;
????????//?})
????????????//?console.log(str);