// 数组常用的方法
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数组方法
最新推荐文章于 2024-11-14 09:30:40 发布
本文详细介绍JavaScript数组的各种操作方法,包括添加、删除、遍历、排序、去重等实用技巧,适用于前端开发人员提升代码效率。
915

被折叠的 条评论
为什么被折叠?



