您的位置:首页 > 其它

【ECMAScript5】ECMAScript5中有关数组的常用方法

2018-01-19 17:22 260 查看
1.indexOf()

此方法返回在改数组中第一个找到的元素位置,如果它不存在则返回-1

vararr=['apple','orange','pear'];

console.log("found:",arr.indexOf("orange")!=-1);//true


2.filter(fn)

此方法创建一个新的匹配过滤条件的数组

vararr=[
{"name":"apple","count":2},
{"name":"orange","count":5},
{"name":"pear","count":3},
{"name":"orange","count":16},
];

varnewArr=arr.filter(function(item){
returnitem.name==="orange";
});

console.log("Filterresults:",newArr);//[{"name":"orange","count":5},{"name":"orange","count":16}]


3.forEach(fn)

此方法用来替换for循环

arr.forEach(function(item,index){
console.log(item);
});


4.map()

对数组的每个元素进行一定的操作(映射)后,会返回一个新的数varoldArr=[{first_name:"Colin",last_name:"Toh"},{first_name:"Addy",last_name:"Osmani"}];

functiongetNewArr(){

returnoldArr.map(function(item,index){
item.full_name=[item.first_name,item.last_name].join("");
returnitem;
});

}

getNewArr();//[{first_name:"Colin",last_name:"Toh",full_name:"ColinToh"},{first_name:"Addy",last_name:"Osmani"fll_name:'AddyOsmani'}]

项目中常用到的场景:
将数组中的某项以字符串的形式get给后台

varoldArr=[{first_name:"Colin",last_name:"Toh"},{first_name:"Addy",last_name:"Osmani"},{first_name:"Yehuda",last_name:"Katz"}];

oldArr.map(function(item,index){returnitem.first_name;}).join();//"Colin,Addy,Yehuda"

或者

oldArr.map(item=>item.first_name).join();//"Colin,Addy,Yehuda"



5.reduce(callbackfn[,initialValue])

可以实现一个累加器的功能,将数组的每个值(从左到右)将其降低到一个值

应用场景“统计一个数组中不重复单词

之前解决方案:
vararr=["apple","orange","apple","orange","pear","orange"];

functiongetWordCnt(){
varobj={};

for(vari=0,i<arr.length;i++){
varitem=arr[i];
obj[item]=(obj[item]+1)||1;
}

returnobj;
}

console.log(getWordCnt());

//{apple:2,orange:3,pear:1}



使用reduce()

vararr=["apple","orange","apple","orange","pear","orange"];

functiongetWordCnt(){
returnarr.reduce(function(prev,next){
prev[next]=(prev[next]+1)||1;
returnprev;
},{});
}

console.log(getWordCnt());//


参考资料:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from

     https://www.cnblogs.com/leejersey/p/5466091.html

作者:smile.轉角

QQ:493177502
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: