数组方法
push
在数组的末尾添加新成员,该操作会破坏原始数组,也可以一次性添加多个成员,返回添加后的数组的长度,也可以添加数组,产生多维数组
var person = ['刘备','关羽'];
person.push('张飞');
console.log( person ); //['刘备','关羽','张飞']
person.push('黄忠','法正');
console.log( person ); //['刘备','关羽','张飞','黄忠','法正']
console.log( person.length ); // 5
person.push(['马超','赵云']);
console.log( person ); //['刘备','关羽','张飞','黄忠','法正',['马超','赵云']]
pop
删除数组的最后一个元素,该操作会破坏原始数组,返回被删除的元素
var person = ['刘备','关羽','张飞'];
person.pop();
console.log( person ); // ['刘备','关羽']
console.log( person.pop() ); // 关羽
shift
删除数组的第一个元素,该操作会破坏原始数组,返回被删除的元素
var person = ['刘备','关羽','张飞'];
person.shift();
console.log( person ); // ['关羽','张飞']
console.log( person.shift() ); // 关羽
unshift
在数组的开头位置添加新成员,该操作会破坏原始数组,也可以一次性添加多个成员,返回添加后的数组的长度
var person = ['刘备','关羽'];
person.unshift('张飞');
console.log( person ); //['张飞','刘备','关羽']
person.unshift('黄忠','法正');
console.log( person ); //['黄忠','法正','张飞','刘备','关羽']
console.log( person.length ); // 5
person.unshift(['马超','赵云']);
console.log( person ); //[['马超','赵云'],'黄忠','法正','张飞','刘备','关羽']
reverse
用于将数组反转后输出,该操作会破坏原始数组
var person = ['张辽','庞统','庞德'];
console.log(person.reverse()) // ['庞德','庞统',张辽']
splice
集添加、修改、删除数组为一体的多功能函数,该操作会破坏原始数组 返回被删除的部分(返回数组)
var person = ['周瑜','陆逊','陈宫'];
console.log(person.splice(1,2,'曹操','吕布')); //['陆逊','陈宫'];
console.log(person) //['周瑜','曹操','吕布']
concat
[].concat(值),值可以是数组,也可以是其他值,不破坏原始数组,返回新数组,可以用作数组浅拷贝
var arr = [0,1,2,3];
var arr1 = arr.concat(5)
console.log(arr1); // [0,1,2,3,5]
var arr2 = arr1.concat([7,8])
console.log(arr2); // [0,1,2,3,5,7,8]
slice
用于起始值和结束索引来抽取数组,不破坏原始数组,返回新数组
var person = ['诸葛亮','孙权','蔡瑁','董卓'];
var arr1 = person.slice(1,3);
console.log(arr1); // ['孙权','蔡瑁']
filter
用于根据指定的条件筛选数组信息,不会破坏原始数组,返回新数组
var arr = [1,2,3,4,5,6];
var result = arr.filter(function(item){
return item>=4
})
console.log(result) // [4,5,6]
forEach
用于循环数组对象,无返回值,并且forEach的第二个参数可以回调函数内部this的值,也可以使用return关键字,效果相当与continue
var person = ['魏延','吕蒙','颜良','文丑'];
var place = ['西汉','东汉']
person.forEach(function(val,index){
.... console.log(this[i]) //西汉 东汉
},this)
person.forEach(function(val,index){
if(val==='颜良') return
console.log(val)
})
map
用于修改数组每个成员的值,map方法需要return返回值,map方法不会影响数组的长度,不会破坏原始数组,返回新的数组
var arr = [1,2,3,4,5,6];
var arr1 = arr.map(function(item,index){
return item*2;
})
console.log(arr1); // [2,4,6,8,10,12]
toString
将数组转换为字符串
var person = ['邓艾','钟会'];
console.log(person.toString()); //苹果,香蕉
//如果里面有对象的话会转化为[object Object]
join
将数组按指定的字符分割转换为字符串,不会破坏原始数组,返回字符串
var person = ['郭嘉','陈群','卢植'];
console.log(person.join() ); //郭嘉,陈群,卢植,
var str = '分久必合合久必分';
console.log(str.split('').reverse().join(''));
// 分必久合合必久分;
find
根据回调函数中的条件返回数组成员,功能类似filter,filter返回数组,find返回单个成员,不会破坏原数组
var arr = ['a','b','c','d'];
var str = arr.find(function(item){
return item === 'a'
})
// a
findIndex
根据回调函数条件查找指定成员的索引值
var arr = ['a','b','c','d'];
var str = arr.find(function(item){
return item === 'a'
})
// 1
includes
检查数组是否包含某个值,包含返回true,不包含返回false
//includes它可以识别NaN==NaN 返回true
var arr = ['杭州',1,undefined];
console.log('南京') //false
console.log(1) // true
reduce
接受两个参数,函数和初始值,其中函数接受两个参数,初始值和数组的每一项,叠加每一个数组的部分,没有初始值默认为数组的首位
// 累加求和
var arr = [1,2,3,4];
var sum = arr.reduce(function(sum,val){
return sum + val;
})
console.log(sum);
some
回调函数内部返回布尔值,只要一个条件为真,整个函数返回为真
var arr = [1,2,4,5,6]
var result = arr.some(function(item){
return item>5;
})
console.log(result); //true
every
回调函数内部返回布尔值,必须所有条件返回真,整个函数返回真值。
var arr = [1,2,4,5,6]
var result = arr.some(function(item){
return item>5;
})
console.log(result); //false
字符串方法
concat
链接字符串函数 ,返回新字符串,不会改变原始字符串
var str = 'hello';
console.log(str.concat(' world'));
trim
清除首尾的空格
console.log(' 55 45 '.trim());
toLowerCase
将大写字母转换为小写字母
console.log('DAWDWWF'.toLowerCase());//dawdwwf
toUpperCase
将小写字母转换为大写字母
console.log('dawdwwf'.toLowerCase());//DAWDWWF
includes
查找某字符是否包含指定的字符,返回布尔值
console.log('ilove'.includes('@')); //false
split
按照给定规则分割字符串,返回数组,第2个参数limit,表示要取数组的个数
var str = '西瓜香蕉橘子';
console.log( str.split() ); //['西瓜香蕉橘子']
console.log( str.split('') ); //['西','瓜','香','蕉','橘','子']
replace
用于替换匹配的子字符串,一般情况下只替换第一个匹配
var str = '180807@qq.com';
console.log(str.replace('@','#'))//180807#qq.com
search
但是返回值为匹配的第一个位置,没有找到返回-1,它的参数支持正则表达式,而indexOf不支持
var str = '180807@qq.com';
console.log(str.search('@')); //6
console.log(str.search('#')); //-1
indexOf
查找指定字符串出现的位置,返回-1表示没有,0表示找到字符,是在第一个位置
var str ='dawdwf';
console.log(str.indexOf('@')) //-1
console.log(str.indexOf('w')) //2
循环的方法
for循环
const arr = [1,2,3,4] for(var i = 0; i < arr.length; i++){ console.log(arr[i]) }
for-in
用于遍历数组或者对象的属性,参数为键
var arr = [1,2,3,4];
for(let i in arr){
console.log(i);//0,1,2,3
console.log(arr[i])//1,2,3,4
}
for-of
用于遍历数组,参数为值,但不能遍历对象
var arr = [1,2,3,4];
for(let i of arr){
console.log(i);//1,2,3,4
}