Array使用方法总结
在ES5中,一共有9个Array方法
Array.prototype.indexof
Array.prototype.lastIndexOf
Array.prototype.every
Array.prototype.some
Array.prototype.forEach
Array.prototype.map
Array.prototype.filter
Array.prototype.reduce
Array.prototype.reduceRight
1、indexOf
indexOf()
,返回查找到该数组中第一个找到的元素位置,没有找到就返回-1.
2、lastIndexOf
lastIndexOf()
,从结尾开始查找,如果找到就返回位置,未找到返回-1.
3、filter
filter()
,返回一个满新匹配过滤条件的数组
不用filter时:
var arr=[
{"name":"apple","count":2},
{"name":"orange","count":5},
{"name":"pear","count":3},
{"name":"orange","count":16}
];
var newArr=[];
for(var i=0,l=arr.length;i<l;i++){
if(arr[i].name==='orange'){
newArr.push(arr[i]);
}
}
用了filter时:
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';
})
4、forEach
forEach()
为每个元素执行对应的方法
var arr=[1,2,3,4,5,6];
//users the usual "for" loop to iterate
for(var i=0,l=arr.length;i<l;i++){
console.log(arr[i]);
}
//users forEach to iterate
arr.forEach(function(item,index){
console.log(item);
})
5、map
map()
,对数组的每个元素执行硬顶操作(映射后),会返回一个新数组
不使用map
var oldArr=[{first_name:"Colin",last_name:"Toh"},{first_name:"Addy",last_name:"Osmani"}, {first_name:"Yehuda",last_name:"Katz"}];
function getNewArr(){
var newArr={};
for(var i=0,l=oldArr.length;i<l;i++){
var item=oldarr[i];
item.full_name=[item.first_name,item.last_name].join(' ');
newArr[i]=item;
}
return newArr;
}
使用map
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;
})
}
6、reduce
reduce()
,可以实现累加器的功能,将数组的每个值(从左至右)将其降低到一个值。
统计一个数组中有多少个不重复的单词
不使用reduce时
var arr = ["apple","orange","apple","orange","pear","orange"];
function GETwORDcNT(){
var obj={};
for(var i=0,l=arr.length;i<l;i++){
var item=arr[i];
obj[item]=(obj[item]+1)||1;
}
return obj;
}
使用reduce后
var arr = ["apple","orange","apple","orange","pear","orange"];
function getWordcnt(){
return arr.reduce(function(prev,next){
prev[next]=(prev[next]+1)||1;
return prev;
},{});
}
- 未完待续。。。。