内置对象Array数组对象,为我们提供了一些常用的方法,可以对数组进行一些常规操作。
数组中的常用方法
检测是否为数组
a. instanceof :标识符
arr instanceof Array
返回fales arr不是数组对象
返回true arr是数组对象
b. Array.isArray(参数) 方法
返回fales arr不是数组对象
返回true arr是数组对象
var obj = {};
console.log(obj instanceof Array);
console.log(Array.isArray(obj));
追加数组元素
push(要添加的元素) :在数组的末尾进行追加,可以添加一个或多个元素 返回值是增加元素后的新数组
unshift(要添加的元素):在数组的开头添加元素,可以添加一个或多个元素 返回值是增加元素后的新数组
删除数组元素
pop():删除数组末尾的元素,一次只删除一个元素,没有参数,直接删除 返回值是删除后的新数组
shift():删除数组开头的元素,一次只删除一个元素,没有参数,直接删除 返回值是删除后的新数组
var arr = [2, 4, 5, 22, 33, 10, 23];
console.log(arr);
// 对象:长度为2 但是数组元素为空
// 使用对象创建数组,一个参数代表数组长度,多个参数代表数组中的元素
var arr1 = new Array(2);
// 长度为2,但是数组元素为2,3
var arr2 = new Array(2, 3);
// 2.添加、删除数组元素
// 添加:push(要添加的数组元素) 在元素的末尾添加一个或多个元素 返回值是:变化后的数组
arr.push('pink', 10);
console.log(arr);
// unshift(要添加的数组元素) 在元素的开头添加添加一个或多个元素 返回值是:变化后的数组
arr.unshift('red', 25);
console.log(arr);
// 删除:pop() 删除数组中末尾的一个元素,一次只能删除一个 没有参数 返回值是:变化后的数组
arr.pop();
console.log(arr);
// shift() 删除数组中开头的一个元素 无参数 返回值是:变化后的数组
arr.shift();
console.log(arr);
输出结果:
判断数组中是否含有该元素
arr.indexOf(ele)
返回值 : -1 表示arr中没有ele元素
num ele元素的索引号
参数:ele 要查询的元素
var arr = [2, 6, 7, 9, 2, 3, 10, 25, 15, 3, 7];
console.log(arr.indexOf(11));
此方法可以用作数组去重
思路:新数组用来放置 去重后的元素
遍历旧数组,用旧数组中的元素去查找新数组的元素,如果新数组中没有,把当前元素追加到新数组中
如果已经存在则不追加。
元素是否存在于数组中 用indexOf() 判断 返回 -1 说明没有该元素
核心算法:新数组的indexOf() = -1 就一直往新数组中追加元素
数组去重:
var arr = [2, 6, 7, 9, 2, 3, 10, 25, 15, 3, 7];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
// 判断旧数组元素是否存在新数组中,== -1 不存在时 ,则追加到新数组中
if (newArr.indexOf(arr[i]) == -1) {
newArr.push(arr[i]); // 追加
}
}
console.log(arr);
console.log(newArr);
输出的结果是这样的:
数组分隔符
就是数组元素输出时,以什么符合分隔。
// join(['符号']) 方法是数组转字符串,默认以,分隔 [] 代表可选部分 可有也可没有
var arr = [2, 6, 7, 9, 2, 3, 10];
console.log(arr.join());
console.log(arr.join('-'));
console.log(arr.join(' & '));
更新数组splice方法
splice(start[,deleteCount[,items[,items1[,items2........]]) 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,
并以数组形式返回被修改的内容。此方法会改变原数组。
参数:
start: 指定修改的位置(从0开始) 可以为负值 从数组的倒数第几位
deleteCount = 0: 原地添加新的元素来修改数组,并以数组形式返回被修改的内容。
deleteCount:整数 表示要移除元素的个数 可选的
items........: 要添加进数组的元素, 从start 位置开始。 如果不指定, 则 splice() 将只删除数组元素
方法的返回值:
返回的是被删除元素的数组
splice方法主要就是更新数组。删除、替换或添加数组元素
var months = ['Jan', 'March', 'April', 'June'];
// 添加元素
// months.splice(0, 0, 'Feb'); // Jane(索引为0 = start) 被替换成Feb 因为 deleteCount是0 没有要删除的元素 添加元素Feb
months.splice(1, 0, 'Feb'); // March(索引为1 = start) 被替换成Feb 因为 deleteCount是0 没有要删除的元素
console.log(months);
// 删除并替换元素 此时moths = ["Feb", "Jan", "March", "April", "June"];
months.splice(4, 1, 'May'); // 把June删除,换成May
console.log(months); // 输出:["Jan", "Feb", "March", "April", "May"];
// 删除不替换 此时 months = ["Jan", "Feb", "March", "April", "May"];
// console.log(months.splice(1, 1)); // 输出 含Feb 长度为1的数组
months.splice(1, 1);
console.log(months); // 输出:["Jan", "March", "April", "May"];
months.splice(2); // 从第2位开始删除所有元素
console.log(months);
输出结果:
slice方法
arr.slice([begin[, end]]) slice 不会修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。
// 参数 取区间【begin,end) 就是取不到end的值,可以取到begin的值
// begin 可选
// 提取起始处的索引( 从 0 开始), 从该索引开始提取原数组元素。
// 如果该参数为负数, 则表示从原数组中的倒数第几个元素开始提取, slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素( 包含最后一个元素)。
// 如果省略 begin, 则 slice 从索引 0 开始。
// 如果 begin 大于原数组的长度, 则会返回空数组。
// end 可选
// 提取终止处的索引( 从 0 开始), 在该索引处结束提取原数组元素。 slice 会提取原数组中索引从 begin 到 end 的所有元素( 包含 begin, 但不包含 end)。
// slice(1, 4) 会提取原数组中从第二个元素开始一直到第四个元素的所有元素( 索引为 1, 2, 3 的元素)。
// 如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2, -1) 表示抽取了原数组中的倒数第二个元素到最后一个元素( 不包含最后一个元素, 也就是只有倒数第二个元素)。
// 如果 end 被省略, 则 slice 会一直提取到原数组末尾。
// 如果 end 大于数组的长度, slice 也会一直提取到原数组末尾。
举例:
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
var citrus = fruits.slice(1, 3);
// 输出 ['Orange', 'Lemon']
console.log(citrus);
var citrus2 = fruits.slice();
console.log(citrus2);
结果:
总结
对于方法的学习
总结三部曲:
a. 方法是做什么的——功能
b. 方法参数是什么——传参
c. 方法的返回值是什么——返回值
还有很多方法需要学习,主要是先学习一些常用方法,其他的方法在需要的时候,去MDN查文档、API,讲的很仔细,对着文档看看,练练例子,最后再自己实现一个小例子,方法基本就掌握的差不多了。
最重要的是要有自学的能力和自觉性,要会用各种资源。
加油加油!!!