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中返回一个自定义规则, 当满足规则时, 数组会进行换位操作

posted @ 2017-08-23 17:47  阿席巴i  阅读(94)  评论(0编辑  收藏  举报