以下是我自己常用的几种写法,可能写的不是最优最简洁,欢迎大家补充更好的方法。
1.for循环----在原数组修改
function handleArr(arr){
var temp;
for(let i = 0; i < arr.length; i++){
for(let j = 0; j < arr.length - i - 1; j++){
if(arr[j] > arr[j+1]){
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
//console.log('before====',arr);
var index = arr.indexOf(10);
arr.splice(0, index+1);
//console.log('after====',arr);
}
handleArr([8,20,19,7,21,11,10]);
handleArr([8,8,9,9,20,19,7,21,11,11,10,14,5,12]);
2.filter()----生成新数组
var arr = [8,20,19,7,21,11,10];
var newArr = arr.filter(item => item > 10);
console.log(newArr);
3.splice()----在原数组修改
var arr = [8,8,9,9,20,19,7,21,11,11,10,14,5,12];
//var arr = [8,20,19,7,21,11,10];
for(let i = arr.length - 1; i >= 0; i--){
if(arr[i] <= 10){
arr.splice(i, 1);
}
}
console.log(arr);
4.看似没问题,实则有错的错误示范
splice()----有bug,重复元素无法删除,i一直递增,如果小于10的两个元素正好紧挨着,会跳过一个
var arr = [8,8,9,9,20,19,7,21,11,11,10,14,5,12];
for(let i = 0; i < arr.length; i++){
if(arr[i] <= 10){
arr.splice(i, 1);
}
}
console.log(arr); //[8,9,20,19,21,11,11,14,12]