map()
map()方法返回一个新数组,不会改变原数组
var arr = [1,2,3,4,5,6,7,8,1,2,3,4]
function pow(x){
return x*x
}
arr.map(function(val,i){
console.log(i) //0 1 2 3 4 5 6 7
console.log(val) // 1 2 3 4 5 6 7 8
})
console.log(arr.map(pow)) // [1, 4, 9, 16, 25, 36, 49, 64]
console.log(arr.map(String)) //["1", "2", "3", "4", "5", "6", "7", "8"]
filter()
filter()方法过滤掉某些元素,返回剩下的元素 不会改变原有数组
var a2 = arr.filter(function(x){
return x % 2 == 0
})
console.log(a2) //[2, 4, 6, 8, 2, 4]
console.log(arr) //[1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4]
filrer()方法去重,主要依靠indexOf总是返回第一个元素的位置,后续的重复元素位置和indexOf返回的位置不相等,因此被过滤掉了
var a3 = arr.filter(function(val,index,self){
return self.indexOf(val) === index
})
console.log(a3) //[1, 2, 3, 4, 5, 6, 7, 8]
reduce()方法,接收一个函数作为累加器
var aa = arr.reduce(function(x,y){
return x+y
})
console.log(aa) //46
sort()方法排序
console.log(arr.sort()) //[1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8]
every()方法可以判断数组的所有元素是否满足测试条件
let a4 = arr.every(function(val){
return val%2==0
})
console.log(a4) //false
some()方法判断数组中是否有某一项满足条件
const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'grape', color: 'purple' }
];
// 条件:是否有红色水果
const isAnyRed = fruits.some(f => f.color == 'red'); //true
find()方法用于查找符合条件的第一个元素,如果找到了返回这个元素 否则返回undefined
let a5 = arr.find(function(val){
return val%3 ==0
})
console.log(a5) //3
findIndex()方法和find()类似,不同之处是返回这个元素的索引,如果没找到返回-1
let arr2 = [2,3,4,5,6]
let a6 = arr2.findIndex(function(val,index){
return val%3==0
})
console.log(a6) //1
foreach() 把每个元素依次作用于传入的函数,但不会返回新的数组,常用于遍历数组
arr2.forEach(function(val){
console.log(val) // 2 3 4 5 6
})
new set() set对象存储的值总是唯一的 去重
console.log([...new Set(arr)]); //[1, 2, 3, 4, 5, 6, 7, 8]
//并集
var arr3 = [1,2,3],
// var arr3 = new Set([1,2,3]);
arr4 = [2,3,4];
// var arr4 = new Set([2,3,4]);
console.log(new Set([...arr3,...arr4])); // {1, 2, 3, 4}
concat()或者展开运算符合并数组
console.log(arr3.concat(arr4)); //[1, 2, 3, 2, 3, 4]
console.log([...arr3,...arr4])//[1, 2, 3, 2, 3, 4]
网友评论