<script>
// ->学习数组中常用的方法,我们需要按照四个维度去进行思考
// 1)方法的作用
// 2)需要哪些参数
// 3)是否有返回值,返回值是什么
// 4)通过此方法是否对原来的数组产生了改变
// 1、关于数组的增加、修改、删除
// var ary = [12, 23, 34, 45,56,78,89,90];
// 1)push:向数组的末尾增加新的内容
// ->参数:想向末尾增加哪些内容就传递谁,而且可以传递多个值,统一向末尾增加多项
// ->返回:新增加后数组的长度
// ->原来的数组已经发生了改变
// var res = ary.push(100,"硕士");
// console.log(res,ary);
// 扩展 不想用push,也想向数组的末尾增加内容
// ary[4]=100;
// ary[ary.length] = 10;
// 2)pop:删除数组最后一项内容
// ->参数:没有
// ->返回:被删除的那一项内容
// ->原有的数组也发生改变
// var res = ary.pop();
// console.log(res,ary);
// 扩展:不用pop删除最后一项内容
// ary.length--;//->ary.length-=1->ary.length-1
// 3)shift:删除数组中的第一项
// ->参数:没有
// ->返回:被删除的那一项内容
// ->原有的数组也发生改变
// var res = ary.shift();
// console.log(res,ary);
// 4)unshift:向数组头增加一项
// ->参数:想增加谁就传递谁
// ->返回:增加后的数组长度
// ->原有的数组也发生改变
// var res = ary.unshift(100);
// console.log(res,ary);
// 5)splice:它既能实现删除也能实现增加,还能实现修改
// [删除]
// ary.splice(n,m)从索引n开始,删除m个元素,把删除的内容以一个新数组的方式返回,原来的数组改变
// ary.splice(n)从索引n开始,删除到数组的末尾
// ary.splice(0)把原来的数组中每一项都删除掉(清空数组每一项),把之前的每一项以一个新的数组返回(把之前的数组克隆了一份一模一样的,这样的克隆会修改原来的数组)
// ary.splice()数组中一项都没有传 返回一个空数组
// var res = ary.splice(1,3);
// console.log(res,ary);
// [修改]
// splice(n,m,x)从索引n开始删除m个用x替换删除的部分,把删除的内容以一个新的数组返回,原来的数组改变
// var res = ary.splice(2, 4,1000);
// console.log(res,ary);
// [增加]
// splice(n,0,x)从索引n开始一个都不删除(返回结果是一个空数组),把x增加到索引n的前面,原来的数组改变
// var res = ary.splice(2, 0, 1000);
// console.log(res, ary);
// var res = ary.splice(ary.length, 0, 1000);//向末尾增加1位
// var res = ary.splice(ary.length-1,1);//从末尾删除最后一项
// 2、关于数组的截取和拼接
// 1)slice:实现数组的截取,在原来的数组中,截取某一部分
// slice(n,m) 从索引n开始,找到索引为m处(不包含m)将找到的部分已一个新的数组返回,原来的数组不变
// slice(n) 从索引n开始一直找到数组末尾
// slice(0)/slice() 把原来的数组克隆一份一模一样的新数组返回
// var ary = [12, 23, 34, 45,56,78,89,90];
// var newArray = ary.slice(3,6);
// console.log(newArray);
// 2)concat:把俩个数组拼接到一起,原来的数组不变
// ary.concat(ary2)把ary2和ary进行拼接,ary2在后面
// ary.contcat()把ary1克隆一份 一模一样的数组
// var ary = [12, 23, 34, 45,];
// var ary2 = [56,78,89,90];
// var newAry = ary.concat(ary2);
// console.log(newAry);
// 3、把数组转化为字符串
// 1)toString:把数组转化为字符串,原来的数组不变
// var ary = [12, 23, 34, 45,];
// var res = ary.toString();
// console.log(res);//"12,23,34,45"
// 2)join: 按照一个分隔符,把数组中的每一项拼接成字符串,原来的数组也不变
// var ary = [12, 23, 34, 45,];
// var res = ary.join("+");
// console.log(res);//"12+23+34+45"
// 扩展:eval->JS中把字符串变为JS表达式执行的一个方法
// console.log("12+23+34+45");//->114
// 把数组中的每一项进行求和
// var ary = [12, 23, 34, 45,];
// console.log(eval(ary.join("+")));
// for(var i = 0;i<ary.length;i++){
// var sum = 0;
// sum = sum+ary[i];
// }
// 4、数组的排序和排列
// 1)reverse 把数组倒过来排列,原来的数组也会发生改变
// 2)sort:给数组进行排序
// ary.sort()这样的话只能处理10以内的数字进行排序,因为他是按照UNICODE编码的值进行排序的
// ary.sort(function (a,b) {
// return a - b;//由小到大
// return b - a;//由大到小
// });
// var ary = [12, 23, 34, 45,];
// var res = ary.reverse();
// console.log(res,ary);
// 5、只有在标准浏览器中兼容的方法,在IE 6、7、8下不兼容的
// 1)indexOf/lastIndexOf(字符串中也有这俩个方法,但是字符串中的这俩个方法兼容所有浏览器,但是数组中这俩个方法是不兼容的)
// 当前内容在数组中第一次/最后一次出现位置的索引,如果数组中没有这一项,返回的结果是-1,如果有这一项,索引是几就返回几,原来的数组不变
// var ary = [12, 23, 34, 45,];
// console.log(ary.indexOf("66"));//-> -1
// //这样的话我们就可以验证当前的内容在数组中是否存在了
// if (ary.indexOf("66")>-1) {
// //说明"66"在数组中存在
// }
// 说明66在数组中不存在
// 2)forEach/map 都是用来遍历数组中的每一项的
// forEach数组中有几项,我们的函数就执行几次,原来的数组不变
// item是属性值 当前便利的数组中这一项的值
// index是属性名 当前这一项的索引
// var ary = [12, 23, 34, 45,];
// ary.forEach(function (item,index) {
// console.log(item,index);
// });
// map 和forEach语法一样,但是比forEach多加了一个把原来内容进行替换的功能
// 返回的新数组每一项都乘了10
// var ary = [12, 23, 34, 45,];
// var newAry = ary.map(function (item,index) {
// return item * 10;
// });
// console.log(ary);//->[12, 23, 34, 45]
// console.log(newAry);//->[120, 230, 340, 450]
</script>