js数组操作⽅法⼤全
数组操作⽅法
1.shift:删除原数组第⼀项,并返回删除元素的值;如果数组为空则返回undefined
var a =[1,2,3,4,5];
var b = a.shift();//a:[2,3,4,5] b:1
2.unshift:将参数添加到原数组开头,并返回数组的长度
var a =[1,2,3,4,5];
var b = a.unshift(-2,-1);//a:[-2,-1,1,2,3,4,5] b:7
(IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以这个⽅法的返回值不可靠,需要⽤返回值时可⽤splice代替本⽅法来使⽤。)
3.pop:删除原数组最后⼀项,并返回删除元素的值;如果数组为空则返回undefined
var a =[1,2,3,4,5];
var b = a.pop();//a:[1,2,3,4] b:5
4.push:将参数添加到原数组末尾,并返回数组的长度
var a =[1,2,3,4,5];
var b = a.push(6,7);//a:[1,2,3,4,5,6,7] b:7
var a =[1,2,3,4,5];
var b = a.concat(6,7);//a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]
let a =[1,2,3,4,5];
let b =[6,7,8,9];
let c = a.concat(b);
let d =[...a,...b];
/
/ 使⽤ ...
console.log(c);
// [1,2,3,4,5,6,7,8,9]
console.log(d);
// [1,2,3,4,5,6,7,8,9]
6.splice(start,deleteCount,val1,val2,…):从start位置开始删除deleteCount项,并从该位置起插⼊
var a =[1,2,3,4,5];
var b = a.splice(2,2,7,8,9);//a:[1,2,7,8,9,5] b:[3,4]
var b = a.splice(0,1);//同shift
a.splice(0,0,-2,-1);var b = a.length;//同unshift
var b = a.splice(a.length-1,1);//同pop
a.splice(a.length,0,6,7);var b = a.length;//同push
var a =[1,2,3,4,5];
var b = a.reverse();//a:[5,4,3,2,1] b:[5,4,3,2,1]
8.sort(orderfunction):按指定的参数对数组进⾏排序
var a =[1,2,3,4,5];
var b = a.sort();//a:[1,2,3,4,5] b:[1,2,3,4,5]
9.slice(start,end):可以截取出数组某部份的元素为⼀个新的数组,有两个必填的参数,第⼀个是起始位置,第⼆个是结束位置( 操作时数字减1 )
var a =[1,2,3,4,5];
var b = a.slice(2,5);//a:[1,2,3,4,5] b:[3,4,5]
10.join(separator):将数组的元素组起⼀个字符串,以separator为分隔符,省略的话则⽤默认⽤逗号为分隔符
var a =[1,2,3,4,5];
var b = a.join("|");//a:[1,2,3,4,5] b:"1|2|3|4|5"
let a =[1,2,3,4,5,6,7,8];
console.log(a.join());// 1,2,3,4,5,6,7,8
console.log(a.join(''));// 12345678
console.log(a.join('@@'));
// 1@@2@@3@@4@@5@@6@@7@@8
11.Array和Object的特性
//Array:
/*新建:*/var ary =new Array();或var ary =[];
/*增加:*/ary.push(value);
/*删除:*/delete ary[n];
/*遍历:*/for(var i=0; i < ary.length ;++i ) ary[i];
//Object:
/*新建:*/var obj =new Object();或var obj ={};
/*增加:*/obj[key]= value;(key为string)
/*删除:*/delete obj[key];
/*遍历:*/for(var key in obj ) obj[key];
Object完全可以作为⼀个集合来使⽤
12
(1)如果我们要在Array中检索出⼀个指定的值,我们需要遍历整个数组:
var keyword =;
  for(var i=0; i < ary.length ;++i )
  {
  if( ary[i]== keyword )
  {
  // todo
  }
}
(2)在Object中检索⼀个指定的key的条⽬,只需要是要使⽤:
var key ='';
  var value = obj[key];
/
/ todo
从数组的指定位置拷贝元素到数组的另⼀个指定位置中。
14.filter()
filter()会将数组中的「每⼀个」元素带⼊指定的函数内做判断,如果元素符合判断条件则会返回,组成⼀个新的数组。
let a =[1,2,3,4,5,6,7,8];
console.log(a.filter(e => e >3));
// [4, 5, 6, 7, 8]
console.log(a.filter(e => e%2==0));
// [2, 4, 6, 8]
15.find()返回符合传⼊测试(函数)条件的数组元素
find()会将数组中的「每⼀个」元素带⼊指定的函数内做判断,并会返回第⼀个符合判断条件的元素,如果没有元素符合则会返回undefined。
console.log(a.find(e => e >3));// 4
console.log(a.find(e => e <0));// undefined
16.forEach()数组每个元素都执⾏⼀次回调函数
forEach()会将数组中每个元素套⽤到指定的函数⾥进⾏运算,函数有三个参数,第⼀个参数表⽰每个元素的值( 必填),第⼆个参数为该元素的索引值( 选填),第三个参数则表⽰原本的数组( 选填)。
let a =[1,2,3,4,5];
let b =0;
a.forEach(item =>{
b = b + item;
});
console.log(b);// 15 ( 1+2+3+4+5 )
如果结合第⼆和第三个参数进⾏搭配使⽤,就能做到改变原本数组的效果。
let a =[1,2,3,4,5];
a.forEach((item, index, arr)=>{
arr[index]= item *10;
});
console.log(a);// [10,20,30,40,50]
17.includes()判断⼀个数组是否包含⼀个指定的值
includes()会判断数组中是否包含某个值,如果有包含就返回true,否则返回false,有两个参数,第⼀个参数表⽰要判断的值( 必填),第⼆个参数表⽰从数组的哪个位置开始判断( 选填)。
let a =[1,2,3,4,5,6,7,8];
console.log(a.includes(2));
// true
console.log(a.includes(2,2));
// false ( 在 3,4,5,6,7,8 查有没有 2 )
18.indexOf()lastIndexOf()搜索数组中的元素,并返回它所在的位置
indexOf()会判断数组中是否包含某个值,判断的⽅式为「由左⽽右」,如果有包含就返回这个值在数组中的索引值,如果没有就返回-1,有两个参数,第⼀个参数表⽰要判断的值( 必填),第⼆个参数表⽰从数组的哪个位置开始判断( 选填,预设为0 )。
let a =[1,2,3,4,5,6,7,8];
console.log(a.indexOf(4));// 3
console.log(a.indexOf(4,5));
// -1 ( 在6,7,8中搜索有沒有4 )
lastIndexOf()会判断数组中是否包含某个值,判断的⽅式为「由右⽽左」,如果有包含就返回这个值
在数组中的索引值,如果没有就返回-1,这个⽅法有两个参数,第⼀个参数表⽰要判断的值( 必填),第⼆个参数表⽰判断从数组的哪个位置开始从右往左查( 选填,默认为整个数组长度-1 )。
let a =[1,2,3,4,5,6,7,8];
console.log(a.lastIndexOf(3));// 2
console.log(a.lastIndexOf(3,1));
// -1 ( 只在1,2中判断,所以沒有 3 )
19.join()把数组的所有元素放⼊⼀个字符串
20.map()
map()会处理数组中每个元素,最后返回⼀个新的数组,⾥头有⼀个函数( 必填) 和⼀个返回函数⾥的this参数( 选填),函数内⼜包含三个参数,第⼀个是每个元素的值( 必填),第⼆个是当前元素的索引值( 选填),第三个是当前的数组( 选填)。
let b = a.map(e =>{
return e +10;
});
console.log(b);// [11, 12, 13, 14, 15, 16, 17, 18]
使⽤第⼆个和第三个参数的⽰例:
let a =[1,2,3,4,5,6,7,8];
let b = a.map((e,i,arr)=>{
return`${e}${i}${arr.find(e => e%5==1)}`;
// 组合成「元素 + 索引值 + 除以五余数为1的第⼀个元素」
});
console.log(b);
// ['101', '211', '321', '431', '541', '651', '761', '871']
如果要使⽤回调函数⾥this的参数,则「不能使⽤」箭头函数,因为箭头函数的this指向和函数的this指向不同,所以要⽤⼀般的函数处理。
let a =[1,2,3,4,5,6,7,8];
let b = a.map(function(e){
return e +this;// 此处的 this为10
},10);
console.log(b);// [11, 12, 13, 14, 15, 16, 17, 18]
21.some()[sʌm]检测数组元素中是否有元素符合指定条件
some()会将数组中的「每⼀个」元素带⼊指定的函数内做判断,只要有任何⼀个元素符合判断条件,就会返回true,如果全都不符合,才会返回false。
let a =[1,2,3,4,5,6];
console.log(a.some(e => e >3));
// 返回 true,因为 4、5、6 ⼤于 3
console.log(a.some(e => e >6));
// 返回 fasle,因为全都⼩于或等于 6
22.fill()
fill()会把数组中所有元素,置换为指定的值,fill()有三个参数,第⼀个是准备要置换的内容(必填),第⼆个是从什么位置开始置换(选填,不设定就全部置换) ,第三个是停⽌置换的元素的前⼀个位置(选填,预设等于数组长度)。
let a =[1,2,3,4,5,6,7,8];
a.fill('a');
console.log(a);// ['a','a','a','a','a','a','a','a']
let b =[1,2,3,4,5,6,7,8];
b.fill('b',3,5);
console.log(b);// [1,2,3,'b','b',6,7,8]
23.length()
length可以取得数组的长度。
let a =[1,2,3,4,5,6,7,8];
console.log(a.length);// 8
23.findIndex()
findIndex()会将数组中的「每⼀个」元素带⼊指定的函数内做判断,并会返回第⼀个符合判断条件元素的位置索引,如果没有元素符合则会返回-1。
console.log(a.findIndex(e => e >3));// 3
console.log(a.findIndex(e => e <0));// -1
js合并两个数组reduce()可以将数组中每个元素进⾏计算,每次计算的结果会再与下个元素作计算,直到结束为⽌,⾥头包含⼀个函数( 必填) 和初始计算的数值( 选填),函数内有四个参数,第⼀个是计算的值( 必填),第⼆个是取得的元素(必填),第三个是该元素的索引值( 选填),第四个是原本的数组(选填)。
let a =[1,2,3,4,5,6,7,8];
let b = a.reduce(function(total, e){
return total + e;
});
console.log(b);// 36 ( 1+2+3+4+5+6+7+8=36 )
reduceRight()和reduce()⼤同⼩异,只是其计算⽅式是由右到左,对于加法来说没什么影响,但对于减法⽽⾔就有差异。
let a =[1,2,3,4,5,6,7,8];
let b = a.reduce(function(total, e){
return total - e;
});
console.log(b);
// -34 ( 1-2-3-4-5-6-7-8 = -34 )
let c = a.reduceRight(function(total, e){
return total - e;
});
console.log(c);
// -20 ( 8-7-6-5-4-3-2-1 = -20 )
25.flat()
flat()可以将⼀个多维数组的深度转成⼀维(扁平化或称作降维),它有⼀个选填的参数,代表要转换的深
度数字,预设为1(只展开⼀层放到⼀维数组⾥,如果是2,只展开2层放到⼀维数组⾥),如果深度有很多层,可使⽤Infinity来全部展开成⼀维数组。
let a =[1,2,[3],[4,[5,[6]]]];
let b = a.flat();
let c = a.flat(2);
let d = a.flat(Infinity);
console.log(b);// [1, 2, 3, 4, [5, [6]]]
console.log(c);// [1, 2, 3, 4, 5, [6]]
console.log(d);// [1, 2, 3, 4, 5, 6]
26.flatMap()
flatMap()的⽅法等于map()和flat()的组合,在运算后直接将数组扁平化处理。
let a =[1,2,[3],[4,5]];
let b = a.flatMap(e => e+1);
let c = a.map(e => e+1).flat();
console.log(b);
// [2, 3, "31", "4,51"] ( 可以看到 b 和 c 得到的结果相同 )
console.log(c);
// [2, 3, "31", "4,51"]
27.Array.isArray()
Array.isArray()能判断⼀个元素是否为数组,如果是就返回true,不然就返回false。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。