目录
1.给定一个数组nums=[2,5,7,11],要求任意两个数组元素和等于指定的值target=9;并返回他们下标,return[0,2]
数组
ECMAScript数组是有序列表,是存放多个值的集合。 有以下特性: 每一项都可以保存任何类型的数据。 数组的大小是可以动态调整。 数组的length属性:可读可写,可以通过设置length的值从数组的末尾移除项或向数组中添加新项
js中的数组是可以存放任意数据类型值的集合,数组的元素可以是任意数据类型,数组的长度可以动态调整。
数组的创建
使用数组字面量
var arr = [1,2,3,4,5];
console.log(arr[3],arr[arr.length-1]);
console.log(arr[6]);
arr[10] = 'hello';
console.log(arr,arr.length);
使用Array构造函数创建数组
/**
* 2.使用构造函数创建数组
* 1.如果在Array中放入的是一个number整数,则表示数组长度,
* 如果是number小数部分不为0则报错,
* 如果是其他数据类型,表示数组元素
*/
var arr1 = new Array();
console.log(arr1); //[]
var arr1 = new Array(10);
console.log(arr1,arr1.length);
var arr1 = new Array(10.0);
console.log(arr1,arr1.length);
var arr1 = new Array('10.2');
console.log(arr1,arr1.length);
和前面所学过的Object原型一样,详情JS原型的介绍、数据属性和访问器属性定义方法以及对象序列化_学前端的狗头苏丹的博客-优快云博客,Array也有原型对象。
console.log(Array,'数组构造函数');
console.log(Array.prototype,'数组原型对象');
console.log(Array.prototype.constructor === Array,'原型对象通过指针指向构造函数');
// 每一个实例都有一个指针指向原型对象
console.log(arr.__proto__ === Array.prototype,'每一个实例都有一个指针指向原型对象');
数组部分API
从末尾开始删除数组元素 pop()
方法:pop() 参数:无 返回值:删除的元素 修不修改原数组:修改
var arr = [1,2,3,4,5];
console.log(arr.pop(),'返回值');
console.log(arr,'');
console.log(arr.__proto__.pop() === Array.prototype.pop());
从末尾增加数组元素 push()
方法:push() 参数:想要添加的数组元素 返回值:返回新数组的长度 修不修改原数组:修改
var res = arr.push('tom','lerry');
console.log(res,arr);
相关练习:
1.给定一个数组nums=[2,5,7,11],要求任意两个数组元素和等于指定的值target=9;并返回他们下标,return[0,2]
// 1.给定一个数组nums=[2,5,7,11],要求任意两个数组元素和等于指定的值target=9;并返回他们下标,return[0,2]
var nums = [2, 5, 7, 11];
var target = 9;
// 直接输出
for (var i = 0; i < nums.length; i++) {
for (var j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
var index = [i, j];
console.log(index);
}
}
}
// 调用函数
function result(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] + arr[j] == target) {
return [i, j]
}
}
}
}
console.log(result(nums));
效果:
2.重构pop方法,要求实现和pop一样的效果
// 2.重构pop方法,要求实现和pop一样的效果
var arr1 = [1, 2, 3, 4, 5];
// 原型对象的方法
// arr1.pop();
console.log(arr1.pop(), '返回值');
console.log(arr1);
// 重构pop
Array.prototype.myPop = function () {
if(this.length<1){
var rm = this[this.length - 1];
// 直接减少长度
this.length--;
// 返回删除值
return rm;
}else{
// 数组为空
return undefined;
}
}
console.log(arr1.myPop(), '返回值');
// arr1.myPop();
console.log(arr1);
3.重构push方法,要求实现和push一样的效果
// 3.重构push方法,要求实现和push一样的效果
var arr2 = [1, 2, 3, 4, 5, 6];
// 原型对象的方法
// arr2.push(7,8);
console.log(arr2.push(7, 8));
console.log(arr2);
// 重构push
Array.prototype.myPush = function () {
// 函数内部属性 arguments 专门保存实际参数的类数组对象
// arguements传递实参,即使没有形参也可以传递
// 遍历调用myPush的实际参数 把实际参数放在数组的末尾下一项
for (i = 0; i < arguments.length; i++) {
this[this.length] = arguments[i];
}
var add = this.length;
return add;
}
console.log(arr2.myPush(9, 10));
console.log(arr2);