数组新API


IndexOf

indexOf() 方法返回在该数组中第一个找到元素位置,如果它不存在则返回-1;
不用indexOf() 时

var arr = ['apple', 'orange', 'pear'];
var index = 0;
for(var i = 0; i < arr.length; i++){
  if(arr[i] == 'orange'){
    index = i;
  }
}
console.log(index);

使用后

var arr = ['apple', 'orange', 'pear'];
console.log(arr.indexOf('orange'));

lastindexOf()

lastIndexOf() 方法返回在该数组中最后一个找到的元素位置,和indexof相反。

every()

every()可是检查数组中的每一项是否符合条件
使用for:

var ary = [12, 23, 24, 42, 1];
var result = function() {
  for(var i = 0; i < ary.length; i++){
    if(ary[i < 0]){
      return false;
    }
  }
  return true;
}
console.log(result()); //全部满足,返回true

使用every:

var ary = [12,23,24,42,1];
var result = ary.every(function(item, index){
  return item > 0
})
console.log(result);

some()

some()可以检查数组中是否有某一项符合条件
使用for:

var ary = [12,23,-24,42,1];
var result = function() {
  for(var i = 0; i < arr.length; i++){
    if(arr[i] < 0){
      return true
    }
  }
  return false;
}
console.log(result());  //有一项小于0,返回true

使用some:

var ary = [12,23,-24,1];
var result = ary.some(function(item, index){
  return itme < 0;
})
console.log(result);

filter

filter() 方法创建一个新的匹配过滤条件的数组
不用filter() 时

var arr = [1,2,3,4,5,6,7,8,9]
var newArr = [];

for(var i = 0; i < arr.length; i++){
  if(arr[i] % 2){
    newArr.push(arr[i]);
  }
}
console.log(newArr);

使用filter()后

var arr = [1,2,3,4,5,6,7,8,9];
var newArr = arr.filter(function(item){
   return item % 2
});
console.log(newArr);

map

map() 对数组的每个元素进行一定操作后,返回一个新的数组
不用map()时

var oldArr = [{first_name: 'shuai'},{first_name:'dan'}];
var newArr;
for(var i = 0; i < oldArr.length; i++){
  var item = oldArr[i];
  item.last_name = 'zhang';
  newArr[i] = item;
}
console.log(newArr());

使用map()时

var oldArr = [{first_name: 'shuai'},{first_name:'dan'}];
var newArr = oldArr.map(function(item, index){
  item.last_name ='zhang';
  return item;
});
console.log(newArr);

reduce

reduce()可以实现一个累加器的功能,将数组的每个值(从左到右)将其降低到一个值。
例如:统计一个数字中有多少个不重复的单词。
不使用reduce时

var arr = ['apple','orange','apple'];
var obj = {};
for(var i = 0; i < arr.length; i++){
  var item = arr[i];
  obj[item] = (obj[item] + 1) || 1;
}
console.log(obj);

使用reduce()后

var arr = ['apple', 'orange', 'apple'];
var obj = arr.reduce(function(prev, next){
   prev[next] = (prev[next] + 1) || 1;
   return prev;
}, {});
console.log(obj);

reduce(callback, initialValue)会传入两个变量。回调函数(callback)和初始值(initialValue)。假设函数它有个传入参数,prev和next,index和array。prev和next你是必须要了解的。
一般来讲prev是从数组中第一个元素开始的,next是第二个元素。但是当你传入初始值(initialValue)后,第一个prev将是initivalValue,next将是数组中的第一个元素。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容