内置对象—Array
首先我们要明白JS内置对象是Javascript自带的一些对象,供开发者使用,这些对象提供了一些常用的方法(函数:把具有功能性的代码封装起来)。常见的内置对象有Math、String、Array、Date等。
当我们创建一个数组时,内部就会赋予其一些常用的方法.【操作数(这里指的是你要操作的array)作为对象去调用对应的方法】
- 数组转换
//语法 : array.join() //作用:将数组的值拼接成字符串。
var arr = [1,2,3,4,5];
arr.join(); //不传参数 ,默认按 “ ,” 拼接,传了参数就用传的值连接
arr.join("-"); //console.log(arr):"1-2-3-4-5"
arr.join(""); //console.log(arr): "12345"
- 数组的增删操作
array.push(); //将一个或多个元素添加到数组的结尾,返回新的长度
array.pop(); //从数组中删除最后一个元素,返回该元素的值,改变了数组的长度
array.unshift(); //将一个或多个元素添加到数组的开头,返回新的长度
array.shift(); //从数组中删除第一个元素,返回该元素的值,改变了数组的长度
// 练习 把数组的第一个元素和最后一个元素交换位置
var arr = ["司马懿","曹丕","杨修","曹植","曹操"];
var a =arr.pop(); //a : "曹操"
var b =arr.shift(); //b : "司马懿"
arr.unshift(a);
arr.push(b);
console.log(arr); // ["曹操","曹丕","杨修","曹植","司马懿"]
- 数组的翻转与排序
array.reverse(); //翻转数组,返回翻转过来的数组
var arr = [1,2,3,4,5,6];
arr.reverse() //console.log(arr): [6,5,4,3,2,1]
array.sort(); //默认 元素会按照转换为的字符串的诸个字符的Unicode位点进行排序,从小到大
//如果是数字,10小于2,比较的是第一位
var arr = ["aa","ab","aab",1,23,4,33,25,56,53];
arr.sort(); // [1,23,25,33,53,56,"aaa","aab","ab"]
//sort()方法可以传递一个函数作为参数,这个参数用来控制数组如何进行排序
var arr = [2,3,5,4,12,1];
arr.sort(function(a,b){ //a,b 代表数组中的每一个值
return a > b; //按照正序从小到大排序[1,2,3,4,5,12]
return a < b; //按照反序排列 [12,5,4,3,2,1]
})
//练习 将字符串数组按照字符串长度从大到小排序
var arr = ["aaa","sdfg","bb","asdfg"];
arr.sort(function(a,b){
return a.length < b.length //arr :["asdfg","sdfg","aaa","bb"]
})
//练习 将学生数组按照年龄从小到大排列(如何将对象排列)
var arr = [{age:12},{age:20},age{15}];
arr.sort(function(a,b){
return a.age > b.age; //arr :[{age:12},{age:15},{age:20}]
})
- 数组的拼接与截取
//concat : 数组合并,不会影响原来的的数组,会返回一个新的数组
var arr1 = [1,2,3];
var arr2 =["a","b","c"];
var newArr =arr1.concat(arr2); //newarr = [1,2,3,"a","b","c"]
//slice : 复制数组的一部分到一个新的数组,并返回新的数组
var nweArray = array.slice(begin,end)
//原来的数组不受影响,包含头不包含尾
var arr = [1,2,3,4,5];
arr.slice(2,4); //[3,4]
//splice: 以新元素替换旧元素,来修改数组的内容,返回被替换的内容,原数组改变
array.splice(start,deleteCount,items);
//start:开始位置;deleteCount:删除的个数;items:替换的内容;
var arr = [1,2,3,4,5];
var newArray =arr.splice(1,3,"a","b");
console.log(newArray); //[2,3,4]
console.log(arr); //[1,"a","b",5]
- 数组查找元素
//indexOf : 用来查找某个元素中第一次出现的位置,如果找不到,返回-1
array.indexOf(search,[fromIndex]);
//lastIndexOf: 从后面开始来查找某个元素第一次出现的位置,如果找不到,返回-1
array.lastIndexOf(search,[fromIndex]);
//fromIndex : 查找开始的位置,默认为0
//练习 用indexOf实现去重
var arr =[1,2,3,4,54,3,2,1];
var newarr= [];
for(i=0;i<arr.length;i++){
if(arr.indexOf(arr[i])==i){ //indexOf(arr[i])得到出现arr[i]元素的第一次出现的位置
newarr[newarr.length]=arr[i]
}
}
console.log(newarr); //[1,2,3,4,54]
//--------------------------------------------------------------------------------------------
var arr =[1,2,3,4,54,3,2,1];
var newarr =[];
for(i=0,i<arr.length;i++){
if(newarr.indexOf(arr[i])==-1){
newarr.push(arr[i])
}
}
console.log(newarr); //[1,2,3,4,54]
- 操作数组里的元素
//function(element,index,array) element:数组里的元素;index:索引值;array:传入的数组
//1. filter 添加过滤方法,返回一个由符合函数要求的元素组成的数组,原数组不变
var arr = [23,,1,4,5,12,34,8];
var newarr = arr.filter(function(element,index,arr){
return element>10;
});
console.log(newarr); //[23,12,34]
//2.map (遍历)方法让数组中的每一个元素都调用一次提供的函数,将调用后的结果存在新的数组里并返回,原数组不变
var arr = [1,2,3,4,5];
var newarr = arr.map(function(element,index,arr){
return element + "0";
})
console.log(newarr); //["10","20","30","40","50"]
//3.forEach (遍历)方法对数组的每一个元素都执行一次提供的函数,且这个函数没有返回值
var arr = [1,2,3,4,5];
var result = arr.forEach(function(element,index,arr){
//数组中的每个元素都会打印
console.log("第" + index + '个元素是" + element);
});
console.log(result); //函数没有返回值
//4.some 方法测试数组中某些元素是否通过由函数提供的实现测试
//5.every 方法测试数组中所有元素是否通过函数提供的实现测试
var arr = [12,34,23,43,2];
var result = arr.some(function(element,index,arr){
return element<10;
});
console.log(result); //true
- 清空数组
// 1. array.splice(0,length); //删除数组中所有的元素
// 2. array = []; //将一个空的数组赋值给数组
// 3. array.length = 0; //直接修改数组的长度
- 综合练习
//获取数组中每个元素出现的次数,以对象的方式呈现出来
var arr = ["c", "a", "z", "a", "x", "a", "a", "z", "c", "x", "a", "x"]
var obj ={};
arr.forEach(function(element,index,arr){
if(obj[element]==undefined){
obj[element]=1;
}else{
obj[element]++;
}
})
console.log(obj);