js数组的方法、字符串的方法、遍历的方法

145 阅读5分钟

数组方法

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
}