js中数组的方法是我们开发项目时必不可少的基础,清楚的了解js数组方法可以帮助我们更合理的开发,下面就给大家列出一些最近的js数组方法。
typeof 判断是否为一个数组
var a=[1,2,3]
console.log(typeof a);
Array.isArray() 判断是否为一个数组,是的话返回true否则返回false
var a=[1,2,3]
var b={1:1,2:2,3:3}
console.log(Array.isArray(a));
valueOf 返回这个数组的本身
var a = [1,2,3]
console.log(a.valueOf());
将数组以字符串形式进行返回
var a=[1,2,3]
console.log(a.toString());
push 在数组末尾添加一个元素
var a = [1,2,3]
a.push("b",4,{1:1},true)
console.log(a);
pop 删除数组最后一个元素,空数组的话则返回underline
var a = [1,2,3]
a.pop()
console.log(a);
join 可以将数组内的元素变为字符串返回,并且可以设置一个参数作为分隔符将元素隔开,没有设置参数的话(()括号内为空)默认用逗号分隔
var a = [1,2,3]
var b = a.f()
console.log(b);
concat可以将两个数组合并成一个数组,也可以将两个对象合并成一个数组
合并数组
var a = [1,2,3]
var b = [2,2,2]
var c =a.concat(b)
console.log(c);
合并对象
var d ={1:1,2:2}
var e ={1:1,2:2}
var f =[].concat(d,e)
console.log(f);
shift 删除数组的第一个元素
var a = [1,2,3]
a.shift()
console.log(a);
unshift 向数组的头部添加一个元素
var a = [1,2,3]
a.unshift('1')
console.log(a);
reverse 可以颠倒数组内元素的顺序
var a = [1,2,3]
a.reverse()
a.reverse()
console.log(a);
slice 可以提取原数组的一部分组成一个新的数组,原数组保持不变,如果参数是负数的话,则表示从倒数的位置开始计算,如果参数值大于数组成员的个数,或者第二个参数小于第一个参数则返回空数组
var a = [1,2,3,123,3,4,5,1,2,2,1]
var b = a.slice(-5)
console.log(b);
console.log(a);
splice() 方法用于删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。splice的第一个参数是删除的起始位置,第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素。
var a = [1,2,3,123,3,4,5,1,2,2,1]
a.splice(3,1) 删除下标为3的数据,删一个
a.splice(1) 删除从下标1开始的所有数据
a.splice(1,5) 删除从下标1开始到下标5前面的数据
a.splice(1,1,152) 删除下标为1的数据并将其替换为第三个参数
console.log(a);
sort 可以将数组内的数据从大到小,或者从小到大排序
var a = [1,2,3,123,3,4,5,1,2,2,1]
从小到大排序
a.sort(function(a,b){
return a-b
})
console.log(a);
从大到小排序
a.sort(function(a,b){
return b-a
})
console.log(a);
根据函数结果返回一个新数组。map方法接受一个函数作为参数。该函数调用时,map方法会将其传入三个参数,分别是当前成员、当前位置和数组本身。
var a = [1,2,3,123,3,4,5,1,2,2,1]
var b =a.map(function(n,s,d){
return n*s
})
console.log(b);
forEach() 方法与map方法很相似,也是遍历数组的所有成员,执行某种操作,但是forEach方法一般不返回值,只用来操作数据。如果需要有返回值,一般使用map方法。forEach方法的参数与map方法一致,也是一个函数,数组的所有成员会依次执行该函数。它接受三个参数,分别是当前位置的值、当前位置的编号和整个数组。
var a = [1,2,3,123,3,4,5,1,2,2,1]
a.forEach(function(item){
item+=1
console.log(item);
})
for循环遍历数组内的所有数据,可以得到所有数据的下标
var a = [1,2,3,123,3,4,5,1,2,2,1]
for(var i=0;i<a.length;i++){
console.log(a[i]);
}
filter方法可以过滤出指定的的数据,将指定的数据变为一个数组或者对象
var a = [
{name:'aa',flag:true ,age:1},
{name:'dd',flag:false,age:2},
{name:'cc',flag:false,age:3},
{name:'dd',flag:false,age:4},
{name:'ee',flag:false,age:5},
]
var b = a.filter((item)=>{
return item.age<3
})
console.log(b);
some判断一个对象或者一个数组内的数据是否有符合条件的,符合条件的为true,不符合的为false,只要有一个为true就都为true,都不为true才返回false
var a = [1,2,3,123,3,4,5,1,2,2,1]
var b =a.some(function(n){
return n>3222
})
console.log(b);
every和some正好相反,所有的为true才返回true,否则返回false
var a = [1,2,3,123,3,4,5,1,2,2,1]
var b =a.every(function(n){
return n>0
})
console.log(b);
indexOf去重
var a = [1,2,3,123,3,4,5,1,2,2,1]
var b = []
a.forEach(function(f1){
if(b.indexOf(f1)===-1){
b.push(f1)
}
})
console.log(b);
附加去重方法:...new Set()结构赋值去重
var a = [1,2,3,123,3,4,5,1,2,2,1]
var b =([...new Set(a) ])
console.log(b);