// 数组常用的方法 console.log('---------------------push() --------------------------') // 1. push 添加到最后 返回添加后的数组 var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push('西瓜') console.log(fruits) // ["Banana", "Orange", "Apple", "Mango", "西瓜"] console.log('---------------------unshift() --------------------------') // 2. unshift 添加到最前面 返回添加后的数组 var fruits2 = ["Banana", "Orange", "Apple", "Mango"]; fruits2.unshift('菠萝','火龙果') console.log(fruits2) // ["菠萝", "火龙果", "Banana", "Orange", "Apple", "Mango"] console.log('---------------------shift() --------------------------') // 3. shift 删除(从前面) 返回处理后的数组 fruits.shift() console.log(fruits) // ["Orange", "Apple", "Mango", "西瓜"] console.log('---------------------pop() --------------------------') // 4. pop 删除最后一项 返回处理后的数组 fruits.pop() console.log(fruits) //["Orange", "Apple", "Mango"] // 5. reverse 数组翻转 返回处理后的数组 fruits.reverse() console.log(fruits) //["Mango", "Apple", "Orange"] console.log('---------------------join() --------------------------') // 6. join 数组转化为字符串 var arr=[1,2,3,4,5]; console.log(arr.join('--')); // 1--2--3--4--5 以join内的参数切割数组 console.log(fruits.join()); // 把数组中的所有元素转换为一个字符串: console.log('---------------------slice() --------------------------') // 7. slice(start,end) 截取数组 从start(开始) 到end(结束 不包含) console.log(arr.slice(2,4)); //3 4 // 8. concat 数组合并 console.log('---------------------concat() --------------------------') var arr1=[1,3,45,66656]; var arr2=["dasdas","asdasd","fvbcvb","vgfdgdg"] console.log(arr1.concat(arr2)) // 9. splice(开始下标,个数,ele1,ele2....) 剪接数组 console.log('---------------------splice() --------------------------') // (1).一个参数 从参数位置截取 填写负数类似上面str slice 返回截好的数组 原数组变化 console.log(arr1.splice(1)) // [3, 45, 66656] console.log(arr1) //[1] console.log(arr2.splice(-3)) // ["asdasd", "fvbcvb", "vgfdgdg"] // (2).二个参数 截取 (开始位置,个数) 返回截好的数组 原数组变化 var arr3=["第一","第二","第三","第四"]; console.log(arr3.splice(1,3)); // ["第二", "第三", "第四"] console.log(arr3.length); // 1 var arr4=["1","2","3","4"]; console.log(arr4.splice(0,1)); // arr4.shift() ["1"] var arr5=["5","6","7","8"]; console.log(arr5.splice(arr5.length-1,1)); //=>arr5.pop() console.log('arr5的长度:'+arr5.length) //3 // (3).添加 原数组增加 var arr6=["9","10","11","12"]; console.log(arr6.splice(2,0,13)); // [] console.log(arr6); //["9","10","11","12"]; // (4).替换 var arr7=["1d","2d","3d","4d"]; console.log(arr7.splice(1,2,'a','b')) // ["2d", "3d"] console.log(arr7) //["1d", "a", "b", "4d"] console.log('---------------------forEach() --------------------------') // 10. arr.forEach(item,index,array){} 遍历,循环 类似jquery的each var arr8=["a","b","c","d","e"]; // 其中的item参数是数组中的内容,index为其索引,array表示数组本身 arr8.forEach(function(item,index,array){ console.log("item是:"+item) console.log("index值:"+index) console.log("array:"+array) }); console.log('---------------------map() --------------------------') // 11. map方法 映射 用法和forEach类似 var men=[ {'name':1,'age':12}, {'name':2,'age':22}, {'name':3,'age':33} ]; age=men.map(function(item){ return item.name +"----"+ item.age }); console.log(age) //1 2 3 console.log('---------------------sort() --------------------------') // 12. arr.sort 排序 var arr9=[1,2,22,11,33,3,5,4,4]; console.log(arr9.sort()) // [1,11,2,22,3,33,4,5] // 默认情况下sort方法是按ASCII字母顺序排序的,而非我们认为是按数字大小排序 //数字排序 arr9.sort(function (a,b) { return a-b }) console.log(arr9) //[1, 2, 3, 4, 4, 5, 11, 22, 33] var numArr=[2,3,2,4,4,4,5,3333,3333]; numArr.sort(); for(var i=0;i<numArr.length;i++){ if(numArr[i]==numArr[i+1]){ numArr.splice(i--,1); } } console.log(numArr) console.log('---------------------冒泡排序--------------------------') function bSort(arr10) { var tmp; for(var i=0;i<arr10.length-1;i++){ for(var j=0;j<arr10.length-1-i;j++){ if(arr10[j]>arr10[j+1]){ //换位置 tmp=arr10[j+1]; arr10[j+1]=arr10[j]; arr10[j]=tmp; } } } return arr10; } var arr10=[311,2,556,11,33,22,342,77,92254]; bSort(arr10) console.log(arr10) //[2, 11, 22, 33, 77, 311, 342, 556, 92254] function cSort(arr) { var tmp; arr.forEach(function (item, i) { arr.forEach(function (item, i) { if (item > arr[i + 1]) { //换位置 tmp = arr[i + 1]; arr[i + 1] = arr[i]; arr[i] = tmp; } }) }) return arr } var arr11=[11,2,52256,1,33,22,38842,75557,92254]; cSort(arr11) console.log(arr11) // [1, 2, 11, 22, 33, 38842, 52256, 75557, 92254] // 2)快速排序 二分法,找到中间的数,取出来(新数组),原数组没,每次和此数比较,小的放到左边,大的放到右面 function fastSort(arr) { var len=arr.length if(len<=1){ return arr} var cIndex=Math.floor(len/2); var c=arr.splice(c,1); var left=[]; var right=[]; arr.forEach(function(item,i){ if(item<c[0]){ left.push(item); }else { right.push(item); } }) return fastSort(left).concat(c,fastSort(right)); } var arr12=[1413,234,52256,6581,34,232,38842,75557,333]; console.log(fastSort(arr12)) // [1, 2, 11, 22, 33, 38842, 52256, 75557, 92254] console.log('---------------------数组去重--------------------------') // 数组去重 // 最简单数组去重法 IE8以下不支持数组的indexOf方法 //新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 function uniq(array) { var temp = []; //一个新的临时数组 for (var i = 0; i < array.length; i++) { if (temp.indexOf(array[i]) == -1) { temp.push(array[i]) } } return temp } var arr13=[1,233,333,11,333,233,1] console.log(uniq(arr13)); // ES6 Set数组去重 const removeDuplicateItems = arr => [...new Set(arr)]; console.log(removeDuplicateItems([42, 'foo', 42, 'foo', true, true,12312,12312])); // => [42, "foo", true] // 思路:获取没重复的最右一值放入新数组 /* * 推荐的方法 * * 方法的实现代码相当酷炫, * 实现思路:获取没重复的最右一值放入新数组。 * (检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)*/ function qc(array) { var temp=[]; var index=[]; var l=array.length; for(var i=0; i<l; i++){ for(var j=i+1;j<l; j++){ if(array[i]===array[j]){ i++; j=i; } } temp.push(array[i]); index.push(i); } return temp } var arr14=[1,88,"ddd","ddd",66,88,1] console.log(qc(arr14));
js数组方法
最新推荐文章于 2023-09-09 16:11:07 发布