javaScript操作数组的常用方法
Opened this issue · 0 comments
whkl commented
map(映射), reduce(规约), forEach(遍历), filter(过滤),它们都是高阶函数,都是以传入不同的函数来以不同的方式操作数组元。ie都不支持
判断是否为数组
- Array.isArray(ele)
Array.isArray({})
//=>false
Array.isArray('')
//=> false
Array.isArray([])
//=>true
查找数组内指定元素位置
- indexOf(ele) / .lastIndexOf(ele)
[1,2,3,4,2,3].indexOf(2) //= > 1 从左到右返回第一个匹配的
[1,2,3,4,2,3].lastIndexOf(2) //=> 4 从右到左第一个匹配元素的位置
遍历数组
- forEach 为每个元素执行对应的方法
遍历数组,参数为一个回调函数,回调函数有三个参数:当前元素,元素索引,整个数组
var a=new Array(1,2,3,4,5,6)
a.forEach(function(val,i,array){ //
a[i]=val+1;
});
- map 遍历数组 ,参数为一个回调函数,返回一个新数组
var a=new Array(1,2,3,4,5,6)
a.map((e,i)=>{
return e*e
});
//=>[1, 4, 9, 16, 25, 36]
- .reduce(function(v1,v2),value) / .reduceRight(function(v1,v2),value)
遍历数组,方法有两个参数
- 回调函数,把两个值合为一个,并返回结果
- value ,一个初始值,可选
//不传initialValue值
var arr = [1,2,3];
arr.reduce(function(pre,cur,index,arr){return pre+cur});
//结果 6
//累加了两次
// 传入initialValue 值
var arr = [1,2,3]
arr.reduce(function(pre,cur,index,arr){return pre+cur},10);
//结果16
//累加了3次,初始值为10
//拼接所有的数组
var flattened = [[0, 1], [2, 3], [4, 5]].reduce( ( acc, cur ) => acc.concat(cur));
//输出[0, 1, 2, 3, 4, 5]
- filter(function(ele))
返回原数组的一个子集,回调函数逻辑判断为true则返回,为false和索引为空则不返回,原数组保持不变
//排除掉小于10的值
var isBigEnough=(element)=> {
return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
数组转字符串
- join() 将数组里面的所有项拼接成一个字符串
var a=[1,2,3,9,7]
a.join(',')
//=>"1,2,3,9,7"
//注意原数组不会被改变
数组去重
- 用到Set对象和 Array.from()方法
a=[1,2,3,4,3,3,3,2]
var arr=new Set(a)
Array.from(arr)
//=>[1, 2, 3, 4]
或者 [...new Set(a)] 使用拓展运算符
- filter 删除重复项
indexOf从左到右查返回第一个匹配,如果索引不等于当前遍历值那边就是重复数据就过滤掉了
arr.filter((item, pos) => arr.indexOf(item) === pos)
- foreach 去重
let arr = ['1', '2', '3', '1', 'a', 'b', 'b']
const unique = arr => {
let obj = {}
arr.forEach(value => {
obj[value] = 0
})
return Object.keys(obj)
}
console.log(unique(arr)) // ['1','2','3','a','b']
*reduce 去重
let arr = ['1', '2', '3', '1', 'a', 'b', 'b']
const unique = arr.reduce((map, item) => {
map[item] = 0
return map
}, {})
console.log(Object.keys(unique)) // ['1','2','3','a','b']
翻转字符串
let str ="Hello Dog";
const reverseString = str =>{
return [...str].reverse().join("");
}
console.log(reverseString(str)) // goD olleH