js数组方法汇总
摘要:在做项目的时候经常会遇到数组,并进行一堆的操作和方法,所以我在这里进行一个总结,把经常遇到的记录一下,希望能方便大家;
1.创建数组
//创建一个空数组 var arr1 = new Array(); var arr2 = [];
2.Array.split()
解释:将字符串转化为数组;
let arr = 'abcd'; let str = arr.split(); console.log(str)// [a,b,c,d]
3.Array.toString()
解释:将数组转化为字符串(字符串间隔为',');
let arr = [1, 2, 3, 4]; let str = arr.toString() console.log(str)// 1,2,3,4
4.Array.join()
解释:与Array.toString一样都是一样将数组转化为字符串,不同的是可以定义字符串的间隔符号;
let arr = [1, 2, 3, 4]; let str1 = arr.join() let str2 = arr.join('-') console.log(str1)// 1234 console.log(str2)// 1-2-3-4
5.Array.splice()
解释:很强大的数组方法,它有很多种用法,可以实现删除、插入和替换。格式作用为Array.splice(开始位置, 删除的个数,元素);
let arr = [2, 0, 1, 9, 0, 2, 2, 0]; let arr1 = arr.splice(8, 0, '记载') let arr2 = arr.splice(2, 3) let arr3 = arr.splice(2, 1, '一') console.log(arr1) //[2, 0, 1, 9, 0, 2, 2, 0,'记载']第9位置新增一个元素 console.log(arr2) //[2,0,2,2,0] 从2位置开始删除三个元素 console.log(arr3) //[2, 0, '一', 9, 0, 2, 2, 0] 从2位置替换一个元素
6.Array.push()和Array.pop()
解释:push()为在数组末尾添加元素,pop()为在数组末尾移除元素;
var arr = [1,2,3,4]; var arr1= arr.push(5,6); console.log(arr); // [1,2,3,4,5,6] var arr2= arr.pop(); console.log(arr); // [1,2,3,4,5]
7.Array.shift()和Array.unshift()
解释:shift()为删除数组的第一项,unshift为将参数添加到数组的开头;
var arr = [1,2,3,4]; var arr1= arr.shift(); console.log(arr); // [2,3,4] var arr2= arr.unshift(0,1); console.log(arr); // [0,1,2,3,4]
8.Array.sort()
解释:将数组数据按升序排列(小-大);
var arr = [1, 3, 4, 2]; var arr1= arr.sort() console.log(arr1); // [1, 2, 3, 4]
9.Array.reverse()
解释:将数组项反转;
var arr = [1, 2, 3, 4]; var arr1 = arr.reverse(); console.log(arr1)); //[4,3,2,1]
10.Array.slice()
解释:将数组进行截取成为新的数组,格式为array.slice(开始下标,结束下标);
var arr = [1,2,3,4,5,6]; var arr1 = arr.slice(1); var arr2 = arr.slice(1,4); console.log(arr1); //[1, 3, 5, 7, 9, 11](不变) console.log(arr2); //[2, 3, 4,5]
11.Array.forEach()
解释:对数组进行循环遍历;
var arr = [1, 2, 3, 4, 5]; arr.forEach(function(index,v){ console.log(index+'-'+v); });//0-1 1-2 -2-3 3-4 4-5
12.Array.filter()
解释:将所有元素进行判断,将满足条件的元素作为一个新的数组返回;
let arr = [1, 2, 3, 4, 5] const arr1=> value => value >= 3 let newArr = arr.filter(arr1) //newArr = [3, 4, 5] 满足条件的元素返回为一个新的数组
13.Array.concat()
解释:将多个数组拼接成一个数组;
let arr1 = [1, 2, 3] let arr2 = [4, 5] let arr = arr1.concat(arr2) console.log(arr)//[1, 2, 3, 4, 5]
14.Array.replace()
解释:将字符串某个字符进行删除或替换;
let arr = 'abcd';
let str = arr.replace('b','');
console.log(str)// acd
let str = arr.replace('b','f');
console.log(str)// afcd
//怎么把后台返回的文字/n换行符改成<br>
15.Array.includes()
解释:判断数组里的值是否与参数相符;
[4, 5].includes(row.orderStatus)
16.Array.forEach()
解释:往数组里添加值;
arr.forEach(function(val, index) {
val.isShow = false;
val.secondList = [];
})
题目:
1.怎么把数组里面参数的每个值取出,放到一个新数组里面?
例如数组如下:
[ { num: 16, money: 500, day: "2019-03-15" }, { num: 17, money: 540, day: "2019-03-16" }, ]
思路:我们应该建三个新数组,然后循环遍历上方数组,然后取出每个参数的值加入到新数组里面;
var Array=上方数组 var newArrayday = [];//日期新数组 var newArraynum = [];//订单数量新数组 var newArraymoney = [];//我的业绩新数组 var j1 = 0; var j2 = 0; var j3 = 0; for(let i in Array){ newArrayday[j1++] = Array[i].day newArraynum[j2++] = Array[i].num newArraymoney[j3++] = Array[i].money } console.log(newArrayday) console.log(newArraynum) console.log(newArraymoney)
2.js去除数组中重复元素的四种方法?
Array.prototype.method1 = function(){ var arr[]; //定义一个临时数组 for(var i = 0; i < this.length; i++){ //循环遍历当前数组 //判断当前数组下标为i的元素是否已经保存到临时数组 //如果已保存,则跳过,否则将此元素保存到临时数组中 if(arr1.indexOf(this[i]) == -1){ arr.push(this[i]); } } return arr; }
Array.prototype.method2 = function(){ var h{}; //定义一个hash表 var arr[]; //定义一个临时数组 for(var i = 0; i < this.length; i++){ //循环遍历当前数组 //对元素进行判断,看是否已经存在表中,如果存在则跳过,否则存入临时数组 if(!h[this[i]]){ //存入hash表 h[this[i]] = true; //把当前数组元素存入到临时数组中 arr.push(this[i]); } } return arr; }
Array.prototype.method3 = function(){ //直接定义结果数组 var arr=[] ; for(var i = 1; i < this.length; i++){ //从数组第二项开始循环遍历此数组 //对元素进行判断: //如果数组当前元素在此数组中第一次出现的位置不是i //那么我们可以判断第i项元素是重复的,否则直接存入结果数组 if(this.indexOf(this[i]) == i){ arr.push(this[i]); } } return arr; }
Array.prototype.method4 = function(){ //将数组进行排序 this.sort(); //定义结果数组 var arr=[]; for(var i = 1; i < this.length; i++){ //从数组第二项开始循环遍历数组 //判断相邻两个元素是否相等,如果相等说明数据重复,否则将元素写入结果数组 if(this[i] !== arr[arr.length - 1]){ arr.push(this[i]); } } return arr; }
3.js去除复杂数组某个参数的方法?
var array=[ { id:1, num:2, price:100, name:'aaa', }, { id:2, num:5, price:200, name:'bbb', }, ] for(let i in array){ delete array[i].price; delete array[i].name; } //结果为[{ id:1,num:2,},{ id:2,num:5,}]
var arr = [ 1,5,1,7,5,9]; Math.max(...arr) // 9
5.更短的数组去重写法?
[...new Set([2,"12",2,12,1,2,1,6,12,13,6])] // [2, "12", 12, 1, 6, 13]
6.数组、字符串的转换?
转为json: JSON.parse eval("("+data+")")
转为字符串:JSON.stringify
以上仅仅为数组的一些常用方法,还有一些不常用的未记录,具体请参考权威Array方法,地址如下:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array