使用js对象模拟数组代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>对象模拟数组</title>
</head>
<body>
</body>
</html>
<script>
function MyArr() {
// arguments压缩可变数量参数为一个类数组
this.length = arguments.length;
for(var i = 0; i < arguments.length; i++) {
this[i] = arguments[i];
}
// 1、新元素将添加在数组的末尾,并返回新的长度
this.push = function (item){
this[this.length] = item;
this.length++;
return this.length;
}
// 2、删除数组的最后一个元素并返回删除的元素
this.pop = function (){
var popArr = this[this.length - 1];
delete this[this.length - 1];
this.length--;
return popArr;
}
// 3、返回表示Integer值的String对象
this.toString = function (){
var result = "";
var j = ',';
for (var i = 0; i < this.length - 1; i++){
result += this[i];
result += j;
}
result += this[i];
return result;
}
// 4、对数组的元素进行排序:正序和倒序
this.sort = function sort(arr, flag = true) {
for(var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if(flag) {
if (arr[j] > arr[j + 1]) {
var swap = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = swap;
}
}else{
if (arr[j] < arr[j + 1]) {
var swap = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = swap;
}
}
}
}
return arr;
}
// 5、返回数组参数中的最大值
this.max = function arrmax(arr) {
var max = arr[0];
for(var i = 0; i < arr.length; i++) {
if(arr[i] > max)
max = arr[i];
}
return max;
}
// 6、返回数组参数中的最小值
this.min = function arrmin(arr) {
var min = arr[0];
for(var i = 0; i < arr.length; i++) {
if(arr[i]< min)
min = arr[i];
}
return min;
}
// 7、反转数组中元素的顺序
this.reverse = function() {
var result = [];
for(var i = 0; i < this.length; i++) {
result[result.length] = this[this.length - i - 1];
}
for(var i = 0; i < result.length; i++) {
this[i] = result[i];
}
return this;
}
}
var arr = new MyArr(11,3,55,88,99,"aaa");
// 添加在数组的末尾
console.log(arr.push("help"));
// 删除数组的最后一个元素
console.log(arr.pop());
// Integer值的String对象
console.log(arr.toString());
// 输出结果是开头第一个的元素
console.log(arr[0]);
// 排序:true时为正序,false时为倒序
console.log(arr.sort(arr, false));
// 返回数组参数中的最大值
console.log(arr.max(arr));
// 返回数组参数中的最小值
console.log(arr.min(arr));
// 反转数组中元素的顺序
console.log(arr.reverse());
</script>
打印结果