Array相关操作
- indexOf
使用场景:
查找一个数组中是否包含某个元素, 如果有则返回下标值, 没有则返回-1
- map
适用场景:批量操作数组,通常用来对元素进行整体格式化或计算操作, 结果会返回一个数组.callback中需返回一个值来进行保存, 以产生新的数组
e.g.:
var oldArr = [
{first_name:"Colin",last_name:"Toh"},
{first_name:"Addy",last_name:"Osmani"},
{first_name:"Yehuda",last_name:"Katz"}
];
function getNewArr(){
return oldArr.map(function(item,index){
item.full_name = [item.first_name,item.last_name].join(" ");
return item;
});
}
console.log(getNewArr());
- filter
适用场景:筛选过滤数组元素, 可以生成一个新的数组, 而不更改原数组, callback中需返回一个规则, 作为过滤的条件
var arr = [
{"name":"apple", "count": 2},
{"name":"orange", "count": 5},
{"name":"pear", "count": 3},
{"name":"orange", "count": 16},
];
var newArr = arr.filter(function(item){
return item.name === "orange";
});
- forEach
适用场景:
对原数组进行操作, 更改原来的元素 (与map()类似, 但是是直接更改原数组的), 由于是直接对原数组进行操作, 所以不需要返回值
reduce(function (prev, next) {}, initial)
适用场景:这是一个数组的累加器,可以依次对各元素进行累加操作, 需要返回操作之后的结果值供下一个循环使用(如果不传入inital,则将数组的第0位作为prev,如果传入intial, 则将inital作为prev, next为数组的第0位)
var arr = ["apple","orange","apple","orange","pear","orange"];
function getWordCnt(){
return arr.reduce(function(prev,next){
prev[next] = (prev[next] + 1) || 1;
return prev;
},{});
}
console.log(getWordCnt());
- sort
适用场景: 对原数组进行排序操作,会更改原数组.默认升序排列 . 若自定义排序规则,则需在callback中返回一个自定义规则, 当满足规则时, 数组会进行换位操作