您好,登錄后才能下訂單哦!
使用Javascript怎么對數(shù)組對象進行操作?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
數(shù)組
數(shù)組定義:簡而言之就是一組有序的數(shù)據(jù)集合,其索引為從0開始且自然增長的整數(shù),其元素值可以是任何js數(shù)據(jù)!并且包含一個名為length的屬性,該屬性表示數(shù)組元素的個數(shù)!
一、定義數(shù)組,有三種定義方式:
方式一:
var arr=new Array(); arr[0]=“11”; arr[1]=“22”; arr[2]=“33”;
方式二:
var arr=new Array(“11”,“22”,“33”);
方式三:
var arr=[“11”,“22”,“33”];
二、數(shù)組的length屬性,可以獲取數(shù)組的長度,也可以截取,清空數(shù)組,如果設(shè)置的值比其當前值小,數(shù)組將被截斷,其尾部的元素將丟失。
如果設(shè)置的值比它的當前值大,數(shù)組的長度將增大,新的元素被添加到數(shù)組的尾部,它們的值為 undefined:
var arr=[“11″,”22″,”33″]; arr.length //3,返回數(shù)組的長度 arr.length = 2 //['11','22'],截取數(shù)組前2個 arr.length = 5 //['11','22',undefined,undefined,undefined],自動添加undefined arr.length = 0 //[],清空數(shù)組
三、遍歷數(shù)組:
var arr=[“11”,“22”,“33”]; //for循環(huán) for(var i=0;i<arr.length;i++){ console.log(i) } //for in循環(huán) for( i in arr ){ console.log(arr[i]) } //forEach循環(huán) arr.forEach(function(i){ console.log(i) })
四、數(shù)組的添加和刪除:
push()
向數(shù)組末尾增加一個或多個元素,其返回值為增加元素后數(shù)組的長度。
var arr=[1,2,3]; arr.push(4) console.log(arr) //[1,2,3,4] arr.push(5,6,7) console.log(arr) //[1,2,3,4,5,6,7]
unshift()
向數(shù)組開頭增加一個或多個元素,其返回值為增加元素后數(shù)組的長度。
var arr=[1,2,3]; arr.unshift(4) console.log(arr) //[4,1,2,3] arr.unshift(5,6,7) console.log(arr) //[5,6,7,1,2,3,4]
pop()
從數(shù)組的末尾開始刪除,返回值為被刪除元素的值。
var arr=[1,2,3]; arr.pop() console.log(arr) //[1,2]
shift()
從數(shù)組的開頭開始刪除,返回值為被刪除元素的值。
var arr=[1,2,3]; arr.shift() console.log(arr) //[2,3]
五、join() 將數(shù)組通過指定的分隔符進行分隔,返回值為string類型,不改變原數(shù)組:
var arr=[1,2,3,4]; arr.join(‘-‘) //”1-2-3-4″ arr.join(”) //”1234″ arr.join(‘ ‘) //”1 2 3 4″
六、sort() 數(shù)組排序:
var arr=[2,8,3,4,12,56]; //從小到大排序 arr.sort(function(a,b){ return a-b; }); //從大到小排序 arr.sort(function(a,b){ return b-a; }); //隨機排序 arr.sort(function(a,b){ return Math.random() – 0.5 })
七、reverse() 將數(shù)組逆序:
var arr=[2,8,3,4,12,56]; arr.reverse() //[56, 12, 4, 3, 8, 2]
八、獲取數(shù)組中最大和最小的數(shù)字:
var arr = [5, 458 , 120 , -215 , 228 , 400]; var max = Math.max.apply(Math, arr); var min = Math.min.apply(Math, arr);
九、slice() 可從已有的數(shù)組中返回選定的元素,不改變原數(shù)組
一個參數(shù),從start下標處開始直到結(jié)尾處。
有兩個參數(shù),從 start下標到end下標(不包括該元素)處的數(shù)組元素:
var arr=[2,8,3,4,12,56]; arr.slice(1) //[8, 3, 4, 12, 56] arr.slice(1,5) //[8, 3, 4, 12]
十、splice()
一個參數(shù),刪除從start下標處開始直到結(jié)尾處。返回刪除的數(shù),這個直接修改原數(shù)組。
有兩個參數(shù),刪除從start下標到end下標處的數(shù)組元素,返回刪除的數(shù),這個直接修改原數(shù)組。
有三個參數(shù),從start下標到end下標的元素替換成第三個參數(shù),如果前兩個數(shù)相同,則是替換,這個直接修改原數(shù)組:
var arr=[2,8,3,4,12,56]; //從下標2的位置開始截取 console.log(arr.splice(2)) // [3, 4, 12, 56] console.log(arr) // [2, 8] var arr=[2,8,3,4,12,56]; //刪除下標1到5的位置 console.log(arr.splice(1,5)) //[8, 3, 4, 12, 56] console.log(arr) // [2] var arr=[2,8,3,4,12,56]; //替換下標1的位置 console.log(arr.splice(1,1,'qqq')) //[8] console.log(arr) //[2, “qqq”, 3, 4, 12, 56] var arr=[2,8,3,4,12,56]; //把下標1到3的位置刪除,并插入qqq console.log(arr.splice(1,3,'qqq')) //[8, 3, 4] console.log(arr) // [2, “qqq”, 12, 56]
十一、concat() 可以將兩個數(shù)組合并成一個新數(shù)組返回:
var arr1=[1,2,3,4,5]; var arr2=[6,7]; var arr3=arr1.concat(arr2); alert(arr1);// [1,2,3,4,5] alert(arr2);// [6,7] alert(arr3);// [1,2,3,4,5,6,7]
十二、數(shù)組去重:
方法一:
function removeRepeat(arr){ return arr.filter(function(elem, pos) { return arr.indexOf(elem) == pos; }); }
方法二:
function removeRepeat(a){ var arr=[]; for(var i=0;i<a.length;i++){ if(arr.indexOf(a[i]) === -1){ arr.push(a[i]); } } return arr; }
方法三:
function removeRepeat(a){ var arr = []; a.forEach(function(i){ if(arr.indexOf(i) === -1){ arr.push(i); } }); return arr }
方法四:
function removeRepeat(arrs){ var newArr = []; var hash = {}; for(var i=0;i<arrs.length;i++){ var key = typeof(arrs[i])+arrs[i]; if(hash[key] !==1){ newArr.push(arrs[i]); hash[key] =1; }; }; return newArr; }
十二、prototype 屬性,直接對數(shù)組的原型進行更改或者添加功能:
//比如我們給數(shù)組添加一個求和的方法 Array.prototype.sum= function(){ var n = 0; this.forEach(function(i){ n+=i; }); return n; } var arr = [1,2,3,4] alert(arr.sum()) //10
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。