一、數組遍歷和其他 1.合併數組 數組.concat(數組1,數組2,數組3,...) 可以用來合併多個數組 //合併多個數組concat var arr = ["zhangsan","lisi","wangwu"]; var arr1 = ["zhaoli","liqi"]; var arr2 = ...
一、數組遍歷和其他
1.合併數組
- 數組.concat(數組1,數組2,數組3,...)
- 可以用來合併多個數組
//合併多個數組concat var arr = ["zhangsan","lisi","wangwu"]; var arr1 = ["zhaoli","liqi"]; var arr2 = ["xiaoliao"]; var newArr = arr.concat(arr1);//合併了兩個數組 console.log(newArr)
運行結果
2.查找元素索引
- indexOf(searchElement,position)和lastIndexOf(searchElement,position)
- searchElement是要找的元素(變數),position就是從數組的哪裡開始找,返回的是第一個找到的索引;
- 註意第二個函數是從後往前找到的第一個元素索引
//indexOf()和lastIndexOf() var n1 = 3; var arr3 = [5,3,5,77,4,5,6,8]; console.log(arr3.indexOf(5, 0)); console.log(arr3.lastIndexOf(5, 5));
顯示結果
3.foreach
- 使用一個特殊的格式
//forEach遍歷 var arr4 = ["zhangsan","lisi","wangwu"]; arr4.forEach(function (value,index,array) { console.log(value); console.log(index); console.log(array); })
顯示結果
二、數組排序
1.sort函數
- 排序是按照字元編碼來進行排序的,如果想要按照其他標準進行排序,那麼需要提供比較函數,該函數比較兩個值,然後返回一個用於說明這兩個值的相對順序的數字,比較函數具有兩個參數a和b,其返回如下:
類型 | 結果 |
---|---|
a<b | a出現在b之前,返回一個小於0的值 |
a=b | 返回0 |
a>b | a出現在b之後,返回一個大於0的值 |
//sort函數 var arr5 = ["Tim","Andy","John","Kobe","James"]; console.log(arr5.sort()); var arr6 = [10,4,8,6,7,100]; console.log(arr6.sort());//可以看出即使是數字也會按照編碼規則進行排序,而不是按照數字大小來進行排序 function sortNumber(a,b) { return a-b;// } console.log(arr6.sort(sortNumber));//把這個比較函數傳入就可以改寫sort的排序邏輯
** 運行結果 **
2.使用冒泡排序來實現sort函數
- 知識點:用函數作為參數傳入
/** * sort的內部實現 * @param {Array}array * @param {Function}fnCompare */ function sort(array,fnCompare){ //這個排序方法是冒泡排序,並且是先排大的值。 for(var i=0;i<array.length-1;i++){//可以看出數組的長度函數和Java一樣 //標記是否完成了排序 var sortFlag = true; //控制比較次數 for(var j=0;j<array.length-1-i;j++){ if(fnCompare(array[j],array[j+1])>0){//如果沒有>0的話,那就會出現永真的狀況 sortFlag = false; //交換位置 var temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } //判斷 if (sortFlag){ break; } } } var arr7 = [10,20,5,1000,50]; sort(arr7,sortNumber); console.log(arr7);
顯示結果
三、源碼:
- D21_1_TraverseArray.html
- 地址:
https://github.com/ruigege66/JavaScript/blob/master/D21_1_TraverseArray.html
- 博客園:
https://www.cnblogs.com/ruigege0000/
- 歡迎關註微信公眾號:傅里葉變換,個人賬號,僅用於技術交流,後臺回覆“禮包”獲取Java大數據學習視頻禮包