字面量创建
//底层实现: new Array();
var arr = [];
数组构造函数创建
var arr1 = new Array();
- toString() 将数组中的每一项拿出来,使用逗号隔开,变成一个字符串
- valueOf() 返回数组本身
join() 使用一个字符将数组分割成一个字符串;join方法不传入参数,默认使用逗号分割
concat() 连接数组之后会返回一个新数组,例如[].concat(arr,arr1)
push() 在数组最后添加项;返回新数组的长度 可以添加多项数据,例如添加多项数据:arr.push(100,200,300,'哈哈哈','嘻嘻嘻')
pop() 删除数组最后一项;返回被删除的最后一项的值 只能删除最后一项
shift() 删除数组第一项; 返回被删除这项的值 每次只能删除一个
unshift() 在数组最前面添加数据项;返回数组的长度 ;’可以添加多项;例如添加多项:arr.unshift('熊大','熊二','光头强')
splice() 删除数组的中指定项;有三个参数 删除数组中的数据项,原数组会被改变;不传入参数,就是将数组中的所有数据项全删除;传入一个值:表示的时候要删除的数据项的索引开始位置,一直到结束;两个参数的时候:第一个表示要删除的数据项的索引开始的位置,第二个值表示:要删除的个数;三个参数的时候:第1个表示要删除的数据项的索引开始位置,第二个值表示要删除的个数,后面的参数是替换删除掉是数据的位置;返回的是被删除的数据组成的数组
slice() 复制,用原来的数组中去复制一份数据出来 原数组中不会受影响;没有参数,相当于将原数组完整的复制了一份;一个参数,表示复制数组中的数据项的索引开始的位置,一直到数组结束位置;两个参数的时候,第一个表示复制数据项的索引开始的位置,第二个表示结束的索引的位置(但是这个位置上的值取不到);返回赋值的数组
reverse() 数组翻转,会改变原数组,返回翻转后的数组
indexOf 获取数组元素的索引;一个参数时,表示查找该字符串的索引;两个参数时,,第二个参数表示查找的索引的开始位置;查找不到返回-1
includes() 检查数组中是否包含某一个数据
- charAt() 根据索引获取对应位置的字符
concat() 拼接字符串;是对象的一个方法,要使用的时候一定要使用对象名.方法名();例如:str.concat(str1)
split() 用来将字符串分割成一个数组的;返回的是一个数组
slice() 截取字符串中的某一部分;不会影响原来的字符串,返回一个新的字符串;当参数是一个值的时候,表示截取索引的开始位置;两个参数时第一个表示截取索引开始的位置,第二个表示索引结束的位置(这个位置上的字符取不到);当传入一个负数的参数,从字符串的后面第一个开始算,第一个的索引就是-1. 一直截取到最后
substring() 截取字符串;不能使用负数,使用负数是无效
substr() 截取字符串;如果是一个参数表示截取字符串索引的开始位置;如果是两个参数,第一个表示截取字符串索引开始的位置,第二个参数表示截取的个数
replace() 字符串替换;第一个采纳数表示旧的字符串;第二个参数表示新的字符串,多个字符串只会替换一次
forEach()
arr.forEach(function(item,index) {
//item:表示循环的数组中的每一项
//index: 表示的时候每一项的索引
console.log(item+'--------------'+index);
})
filter() 过滤器
// ES6中提供的一个叫过滤器的函数 filter() 过滤 筛选:根据一定的条件来做筛选
// 使用: filter(函数) 传入的函数中定义了一些筛选的条件
// filter这个方法会返回一个新的数组
var arr = [2000,3000,1500,1800,6000,5800];
var res = arr.filter(function(item) {
//item表示的就是arr这个数组中的每一项数据
return item>2000; //筛选条件, 返回arr数组中数据项值大于2000的数据项
})
console.log(res);
map() 映射
// ES6中的映射map方法
// 从后台过来一条数据:
var arr = ['家用电器','手机','保健食品','护肤产品','空调']
// 家用电器
//map方法也会返回一个新的数组 map方法底层实际上已经做了数组的循环遍历了
var res = arr.map(function(item) {
return ''+item+' '
})
console.log(res);
some() 用于检测数组中的元素是否满足指定条件;如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测;如果没有满足条件的元素,则返回false;some() 不会对空数组进行检测
var arr = [100, 200, 300, 400];
// some能够查看是否找到,但是不能够取出这个数据
var newArr = [];
arr.some(function (val, index) {
console.log( index );
// 查找200,并且取出200;如果找到200就存到数组中
if ( val >= 200 ) {
// 满足这个条件的val就是我们要找的值,吧这个值拿出来装到newArr
newArr.push(val);
return true;
}
});
every() 用于检测数组所有元素是否都符合指定条件;如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测;如果所有元素都满足条件,则返回 true
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
输出数据
// 输出数据
// 展开运算符其实是将里面的元素, 展开成逗号分隔的语法形式
// 展开运算符可以说一个语法糖, 本身并没有真正的作用
let arr = [1,2,3];
console.log(...arr);// 输出 1,2,3
借助concat()方法来复制数组
// // 数组是一个引用型的对象, 经常会有数据污染的困扰,
// // 如果通过展开运算符生成一个新数组, 两个数组之间就是互相独立的了
// 复制数组(原生)
let arr2 = arr.concat([]);
console.log(...arr2);//1 2 3
借助展开运算符合并数组
// 合并数组(es6)
let arr4 = [...arr,...arr2];
console.log(arr4);//[ 1, 2, 3, 1, 2, 3 ]
借助set中元素不能重复的特点来帮助数组去重
// 数组去重
//使用set对象去重 set元素不能重复
let arrReply = [1,2,3,3,4,5,5];
let arr5 = [...new Set(arrReply)]
console.log(arr5);//[ 1, 2, 3, 4, 5 ]
// 数组生成set
let set = new Set(arr5);
console.log(set);
// set转化为数组
let arr6 = [...set];
console.log(arr6);
借助Object.assign()浅拷贝方法处理单层对象的合并
// 合并对象
// Object.assign 可以进行对象的合并
// 这个函数只要传入对象作为参数即可
let obj3 = {name:'tom'};
let obj4 = {age:17};
// 将后面的参数合并到第一个对象中,修改第一个对象
Object.assign(obj3,obj4);
console.log(obj3);
借助Object.assign()浅拷贝方法还可以处理单层对象的赋值
let obj7 = Object.assign({},obj6);
console.log(obj7);
var student = {
name: 'tom',
age: 12,
school: {
name: 'xxx',
address: 'yyy'
}
}
// 解构对象内部对象的属性
// 解构语法方便这种从一个对象中提取属性, 赋值给变量的操作, 只需要一个花括号即可
let {name} = student.school;
console.log(name);
let {age, address} = student;
console.log(age,address);
for in 循环
let stu = {a:1, b:2, c:3};
// 4.1. for in 循环
for(let key in stu){
console.log(stu[key]);
}
获取key值的集合
// 获取到所有key
let keyArr = Object.keys(stu);
console.log(keyArr);
keyArr.forEach(key=>{
console.log(stu[key]);
});
综合示例
map很适合变更已有数据结构
let students = [
{ name: "小明", age: 18 },
{ name: "小红", age: 18 },
{ name: "小天", age: 18 },
]
// 1. 优先考虑, 不要影响原数组, 可以使用 map 映射
let newStus = students.map((item)=>{
// 不要影响遍历出来的对象, 这个时候可以使用展开运算符进行复制
return{
...item,
school:'xxxx'
}
});
console.log(students);
console.log(newStus);