1. 程式人生 > >JS中數組那些事~

JS中數組那些事~

man ice 數組求和 尾刪 log var lte 數組 style

  今天閑的沒事,看了一些關於數組的操作,好久木有用過,很多都已經忘記的差不多了,所以今天花了一個小時寫了一些demo,準備備份一下方便以後使用~~~

  下面是一些工作當中,經常用到的數組的方法,小夥伴可以自行選擇自己的喜好~~~

<!DOCTYPE html>
<html>
<head>
    <title>array</title>
</head>
<body>
    
</body>
<script type="text/javascript">
    
    var 
            arr  
= [1,2,3,4,5], arr1 = [10,4,5,2,8,99]; /* A instanceof B A是不是B造出來的 */ console.log(arr instanceof Array) //true /* Array.isArray(a) 變量a是否是數組 */ console.log(Array.isArray(arr))
//true console.log(Array.isArray(2)) //false /* toString() 數組轉為字符串,用“ , ”鏈接; join也能達到這種效果 */ console.log(arr.toString()) /* 數組.join(‘符號‘) 將數組以符號鏈接形成字符串
*/ console.log(arr.join(‘$‘)) console.log(arr.join(‘ ‘)) /* push 在數組末尾添加 pop 在數組末尾刪除 */ arr.push(‘paoAfter‘) console.log(arr); arr.pop() console.log(arr); /* unshift 在數組最前面添加 shift 在數組最前面刪除 */ arr.unshift(‘paoUnshift‘) console.log(arr) arr.shift() console.log(arr) /* 數組的排序 */ /* reverse 數組翻轉 */ console.log(arr.reverse()) /* sort() ???? 數組排序,從小到大 */ console.log(arr.sort()) //利用回調函數對數組大小進行排序 arr1.sort(function (a,b) { return a - b; }) console.log(arr1) /* 數組元素的操作 */ /* 數組1.concat(數組2) 拼接兩個數組 */ console.log(arr.concat(arr1)) //數組去重1: Array.prototype.arrUnique = function () { // 先排序 this.sort(); // 定義一個新數組從排序後的數組的第一個開始接收值 var arr = [this[0]]; // 從第二個數值開始比較 for (var i = 1; i < this.length; i++) { //比較相鄰的值不一樣時,新數組接收值,達到去重效果 //原數組的第一個與新數組的最後一個相比較 if( this[i] !== arr[arr.length - 1]) { arr.push(this[i]) } } return arr; } var arrnew = arr.concat(arr1).arrUnique() console.log(arrnew) // 數組去重2 var r=[], arr = [‘apple‘, ‘strawberry‘, ‘banana‘, ‘pear‘, ‘apple‘, ‘orange‘, ‘orange‘, ‘strawberry‘]; for(var i=0,len=arr.length;i<len;i++){ //如果新的數組中找不到arr數組中的元素,將數組元素存放在新數組中 if(r.indexOf(arr[i])===-1){ r.push(arr[i]); } } /* slice 數組的截取 數組.slice(開始的索引,結束的索引) */ console.log(arr.slice(3)) //從索引值為3截取到最後 console.log(arr.slice(0,3)) //從索引值為1到3截取 console.log(arr.slice(-2)) //負數後幾個 /* 數組.splice (開始索引值,刪除幾個,替換內容1,替換內容2,....) 同slice有點雷同 */ console.log(arr.splice(3)) //從索引值為3截取到最後 console.log(arr) console.log(arr.splice(0,3)) //從索引為0開始刪除3個 console.log(arr) console.log(arr1) console.log(arr1.splice(1,2,‘a‘,‘b‘)) //從索引為1開始刪除2個,並用‘a’,‘b’替換刪除的內容 console.log(arr1) /* 數組.indexOf(元素) (從左往右) 數組中是否包含元素,如果包含,返回對應的索引;如果不包含,返回-1 數組.lastIndexOf(元素) (從右往左) */ console.log(arr1.indexOf(2)) //index:0 console.log(arr1.indexOf(990)) //-1;查不到 console.log(arr1.lastIndexOf(2)) //index:0 console.log(arr1.lastIndexOf(990)) //-1;查不到 /* 數組叠代 */ /* 數組.map(function (item,index,array) { return newArr}) */ var sporter =[{ name:‘aa‘, isHell:null },{ name:‘bb‘, isHell:null },{ name:‘cc‘, isHell:true }]; var arr2 = []; sporter.map(function (item,index,array) { if ( item.isHell ) { arr2.push(item.name); } }) console.log(arr2) // es6寫法 sporter.map( item => { if ( item.isHell ) { arr2.push(item.name); } }) console.log(arr2) /* 數組.filter(function (item,index,array) { return newArr}) 返回符合條件的元素為true的數組 */ var arr = sporter.filter( item => {return item.isHell}); console.log(arr) var arr = sporter.filter( item => item.isHell); console.log(arr) console.log(‘-1‘ == false) //false // 數組去重3 var arr3 = [1,2,3,2,3,5,6,6]; var arr = arr3.filter(function(item,index,self) { console.log(item+‘----------------‘+self) return self.indexOf(item) == index; }); console.log(arr) /* every() 數組中的每一項運行給定函數,如果該函數對每一項都返回true,則返回true ; some() 對數組中的每一項運行給定函數,如果該函數對任一項返回true,則返回true; */ var arr = sporter.every(function (item) { return item.isHell; }) console.log(arr) var arr = sporter.some(function (item) { return item.isHell; }) console.log(arr) /* forEach() 和for循環一樣,沒有返回值 */ var arr = sporter.forEach(function(item) { item.sex = ‘man‘ }) console.log(arr) //因為forEach沒有返回值,所以是undefined /* 數組.redval(a,b) 這個方法一般用在累計累加上,實用技巧暫時還沒發現。比如,數字數組求和,字符串數組連接上 */ // 數組求和,數組的拼接 var sum=0,arr=[1,2,3,4,5,6]; sum = arr.reduce(function (a,b) { return a + b; }) /* 數組.find(val) 方法返回傳入一個測試條件(函數)符合條件的數組第一個元素。 */ var arr4 = [1,2,3,4]; var a = arr4.find(function(val){ return val > 2; }) console.log(a) /* 數組.findIndex(val) findIndex:方法返回傳入一個測試條件(函數)符合條件的數組第一個元素位置。 如果不存在,則返回-1;如果存在滿足條件的,返回符合條件的第一個索引; */ var a = arr4.findIndex(function(val) { return val > 4; }) console.log(a) //-1 /* 數組的清空 */ var arr5 = [‘a‘,‘b‘,‘c‘,1]; arr5.length = 0; //偽數組無法清空 console.log(arr5) arr5.splice(0); //從索引為0開始截取到最後一個,偽數組無法清空 console.log(arr5); arr5 = []; //推薦使用,偽數組可用 // 偽數組:就是長的像數組,不過沒有數組的方法,不能添加刪除元素 fn(111,222,333); function fn() { arguments.length = 0; //無法清空 console.log(arguments); arguments.splice(0) console.log(arguments); //報錯 arguments = [] console.log(arguments) } </script> </html>

好啦,有需要了解的

JS中數組那些事~