ES5 操作数组的方法

574 阅读7分钟

ES5中操作数组对象的常用方法

先说一句

JS常用内置对象及方法:
 数组对象方法-Array
 字符串对象方法-String
 数学对象方法-Math
 日期对象方法-Date

Array数组对象

转化

字符串转化为数组

"string".split(“char”);

效果:将字符串按一定参数符要求分割转化为字符数组,无参数直接全部转化为字符数组。 参数:1个; 返回值:按参数(符号)分割的数组,数组内不包含参数

"string".split("");//代表按空字符转换成数组
//["s","t","r","i","n","g"]

Array.from("string");

效果:字符串直接转化为字符数组 参数:一个; 返回值:字符数组

数组转化为字符串

arr.join("");

效果:将字符数组按一定参数符分割转化为字符串, 参数:1个; 返回值:按参数(符号,)连接的字符串,

查询

arr.indexOf(“a”)

效果:从数组头部找数组中某个元素 参数:1个、、从开始查找直到找到第一个 arr1.indexOf("a") 返回值:未找到 返回-1,找到返回下标

参数:2个、、从第二个参数下标开始查找直到知道到第一个 arr1.indexOf(“a",5)

返回值:未找到 返回-1,找到返回下标

arr.lastIndexOf(“a”)

效果:从数组尾部开始 找数组中某个元素 参数:1个、、从开始查找直到遇到第一个 arr1.indexOf("a") 返回值:未找到 返回-1,找到返回下标

参数:2个、、从第二个参数下标开始查找直到遇到的第一个 arr1.indexOf(“a",5)

返回值:未找到 返回-1,找到返回下标

arr.includes("str")

效果: 查看找数组中是否存在某个元素 参数:1个 返回值:布尔值。未找到 返回false,找到返回true

添加

arr.push("string",1);

效果:在数组最后面,添加一个或多个元素 参数:一个或多个number和string类型都可以,,参数必填, 返回值:修改原来的数组,返回修改后的数组长度

arr.unshift("string",1); 在数组最前面,添加string元素(参数必填,可以跟多个参数)

效果:在数组最前面,添加一个或多个元素 参数:一个或多个number和string类型都可以,,参数必填, 返回值:修改原来的数组,修改原来的数组,返回修改后的数组长度

删除

arr.pop("string");

效果:在数组最后面,删除元素 参数:一个或多个number和string类型都可以,,参数必填, 返回值:修改原来的数组,修改原来的数组,返回修改后的数组长度

arr.shift("string");

效果:在数组最前面,删除元素 参数:参数是可选的,不填就是第一个,填了就是排最前的指定元素 返回值:修改原来的数组,修改原来的数组,返回修改后的数组长度

拼接

arr.concat();

效果:按顺序将数组和参数拼接在一起,参数可以是字符、数字、也可以是数组 参数:1个; 返回值:加上参数元素的字符数组

参数:2个 返回值:拼接了两个参数的数组

参数:3个或多个 返回值:拼接了多个参数的数组

裁切

arr.slice(start,end;

效果:裁切数组,从start下标到end下标开始裁切,不包含end下标,不会改变原数组。 参数:1个;arr.slice(2);从2下标开始,裁切到最后。 返回值:从参数开始的后面所有元素的数组,(包含参数下标元素)

参数:2个;arr.slice(2,4);从2下标开始,切到4,不包含下标4的元素 返回值:从参数1开始到参数2结束的前面所有元素的数组,(不包含参数2下标元素)

arr.splice();

注:arr.splice()在数组中可以做到删除,裁切,添加或替换元素,

arr.splice(length);

效果:删除参数长度元素的数组;会改变原数组。 参数:1个 返回值:删除掉的前三个元素的数组,

[1,2,3,4].splice(3)//[4]

arr.splice(star,length);

效果:裁切从起始下标开始,参数长度元素的数组;会改变原数组

参数:2个;第一个起始下标,第二个值为删除的个数,即长度。 返回值:删除掉的起始坐标数的长度个元素的删除掉的数组,不包含起始坐标元素

var arr=[1,2,3,4]
arr.splice(1,2)//[2,3]
arr//[1,4]

arr.splice(star,length,string...);

效果:用第二个参数后的参数替换从起始下标开始,参数长度元素的数组;会改变原数组

参数:多个;第一个值为起始坐标,第二个值为替换的个数,后面的值都为替换的新元素; 返回值:被替换的元素的数组

var arr=[1,2,3,4]
arr.splice(1,2,"a","b","c")//["a","b","c"]
console.log(arr);//[1,"a","b","c",4]
var arr=[1,2,3,4]
arr.splice(1,1,"a","b")
console.log(arr);//[1,"a","b",3,4]
//相当于先删除第二个参数个,再添加参数个数

arr.splice(star,0,string...);

效果:用第二个参数后的参数添加到从起始下标开始,参数长度元素的数组;会改变原数组

参数:多个;arr.splice(2,0,"a","b","c")若第二个值为替换的个数为0,后面的值都为插入的新元素; 返回值:添加元素的数组

自我总结 (开始索引,操作几个,'元素1','元素2'); 增删改都可以做 (推荐使用)

排序

正序

arr.sort();

效果:将数组内元素,排序,数字按数值;字符,按编码 参数:无 返回值:排好序的数组

反转

arr.reverse();

效果:将数组内元素,倒序排序,数字按数值;字符,按编码 参数:无 返回值:排好序的数组

遍历

arr.foeEach( ()=>{} );

效果:用于遍历一个数组,

参数:接收三个参数,valueindexself

返回值:返回值为undefined

var array1 = ['a', 'b', 'c'];

array1.forEach(value,key,self) =>{
  	console.log(value+2);//a2 b2 c2
    console.log(key+2);//2 3 4
    console.log(self.push(2));//['a', 'b', 'c',2]
});
arr.map( ()=>{} );

效果:用于遍历一个数组,每一项运行给定的函数

参数:接收三个参数,valueindexself

返回值:返回值是处理完的结果。

var array1 = [1, 4, 9, 16];
const map1 = array1.map((value,key,self) => value * 2); //对数组的每项*2
console.log(map1);// [2, 8, 18, 32]
arr.filter();

效果:用于过滤数组内的符合条件的值,

参数:函数,

返回值:返回值为满足条件的数组对象.

let list = [1, 2, 3];

let res = list.filter(item => item > 1);
console.log(res) // [2, 3]

arr.every();和arr.some();方法

效果:两个都是用于检测数组所有元素是否都符合指定条件,

参数:函数,

返回值:返回值为Boolean , 该方法是数组中必须全部值元素满足条件返回true,否则false

every

所有函数的每个回调都返回true的时候才会返回true,当遇到false的时候终止执行,返回false。

// every
et list = [1, 2, 3];

let res = list.every(item => item > 0)
console.log(res) // true

let res1 = list.every(item => item > 1)
console.log(res1) // false

some

函数的回调存在有一个函数返回true的时候终止执行并返回true,否则返回false。

//some
let list = [1, 2, 3];

let res = list.some(item => item > 0)
console.log(res) // true
arr.reduce();

效果:该方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

参数:我们一般只用前两个就行,reduce第一个参数回调函数,第二个参数是初始值

返回值:

let list = [1, 2, 3];

let res = list.reduce(( prev, cur ) => prev += cur, 0)
console.log(res) // 6

总结

改变原始数组值的有哪些

splicereversesortpushpopshiftunshiftfill

  • 在用会改变原数组的方法的时候,
  • 若遍历数组时候使用for循环会出现问题(如案例-去空),
  • 建议用ES5提供遍历数组的方法
//去空
for(var i=0;i<arr.length;i++){
    if(arr[i]==" "){
        arr.splice(i-1,1);
        //i--;
    }
}
//会出现相邻空字符不能去除的问题

因为会修改原数组,所以在遍历数组的时候,原数组变化,遍历时如果计数不变,会导致遍历不完全

解决办法:

索引减一,案例中即i--;

ES6系列 数组方法

  • includes
  • find
  • findIndex
  • flat
  • fill
  • Array.from
  • Array.of
    最后一句

这是沉曦的学习心得!若有不正,还望斧正。希望掘友们不要吝啬对我的建议哦,回见。