1数组翻转
(1) 定义一个新数组,将原数组倒着遍历,然后将新数组的每一个元素添加到新数组中
var arr = [1, 2, 3, 4, 5];
var arr=[1,2,3,4,5]
//定义新数组
var newArr=[];
//遍历原数组
for (var i = arr.length - 1; i >= 0; i--) {
//将原数组中每一项添加到新数组中
newArr[newArr.length] = arr[i];
}
//打印新数组
console.log(newArr);
(2) 直接改变原数组,定义中间变量来交换每一项
var arr = [1, 2, 3, 4, 5];
//控制交换次数
for (var i = 0; i < arr.length / 2; i++) {
//定义中间变量进行交换
var temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
console.log(arr);
2 冒泡排序
将每个元素与数组中所有元素进行比较
var arr=[1,2,45,100,20,120];
//控制循环次数
for(var i=0;i<arr.length-1;i++){
//控制元素比较的次数
for(var j=0;j<arr.length-i-1;j++){
//判断大小
if(arr[j]>arr[j+1]){
//定义中间变量
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
console.log(arr);
封装冒泡排序
function fn(arr) {
//控制循环次数
for (var i = 0; i < arr.length - 1; i++) {
//控制元素比较的次数
for (var j = 0; j < arr.length - i - 1; j++) {
//判断大小
if (arr[j] > arr[j + 1]) {
//定义中间变量
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
console.log(fn([1, 2, 45, 100, 20, 120]));
3数组去重
(1)先进行排序在去重
function fn(arr) {
var newArr = [];
// 1.先冒泡排序
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 2.遍历数组中每一项
for (var i = 0; i < arr.length; i++) {
//判断相邻的每一项想不想等,不相等就添加到新数组中去
if (arr[i] != arr[i + 1]) {
newArr.push(arr[i]);
}
}
//返回新数组
return newArr;
}
(2)开关思想
function fn(arr) {
var newArr = [];
//遍历数组
for (var i = 0; i < arr.length; i++) {
//定义开关
var isT = true;
//遍历新数组
for (var j = 0; j < newArr.length; j++) {
//判断原数组中的每一项和新数组中的每一项相不相等,如果相等
//就直接结束
if (newArr[j] == arr[i]) {
isT = false;
break;
}
}
if (isT) {
//将不相等的数添加到新数组中
newArr.push(arr[i]);
}
}
return newArr;
}
(3) 使用Indexof()
function fn(arr) {
var newArr = []
for (var i = 0; i < arr.length; i++) {
//判断新数组中有没有重复的元素
if (newArr.indexOf(arr[i]) == -1) {
//把不重复的元素添加到新数组中
newArr.push(arr[i])
}
}
return newArr;
}
案例
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
function fn(m, n) {
var arr = [];
var newArr = [];
//将输入的数字添加到数组中
for (var i = 0; i < n; i++) {
var shuzi = parseInt(prompt("请输入第" + (i + 1) + "个数字"));
arr.push(shuzi);
}
//先交换后面的数字
for (var i = arr.length - m - 1; i >= 0; i--) {
newArr[i + m] = arr[i];
}
//把前面的数字替换掉
for (var i = arr.length - m; i < arr.length; i++) {
newArr[i - (arr.length - m)] = arr[i];
}
return newArr;
}
console.log(fn(2, 5));