今早看到一篇关于一道面试题(原文链接),发现评论区有人使用ES5中的方法来解决,我发现此方法比传统的js方法更简单于是查找了相关资料加以了解。
ES5中新增的不少东西,了解之对我们写JavaScript会有不少帮助,比如数组这块,我们可能就不需要去有板有眼地for
循环了。
ES5中新增了写数组方法,如下:
- forEach (js v1.6)
- map (js v1.6)
- filter (js v1.6)
- some (js v1.6)
- every (js v1.6)
- indexOf (js v1.6)
- lastIndexOf (js v1.6)
- reduce (js v1.8)
- reduceRight (js v1.8)
浏览器支持
- Opera 11+
- Firefox 3.6+
- Safari 5+
- Chrome 8+
- Internet Explorer 9+
上面上代码(有注释):
var sum = 0;
[1,2,3,4].forEach(function(item,index,array){ //ECMA5的新方法类似jquery的$.each
console.log(array[index] == item);
sum += item;
console.log(sum);
});
var array =[1,2,3,4].map(function(item){ //map映射一个新的数组
return item * item;
});
console.log(array);
var data = [0, 1, 2, 3];
var arrayFilter = data.filter(function(item) { //filter过滤数组
return item;
});
console.log(arrayFilter); // [1, 2, 3]
var sum = [1, 2, 3, 4].reduce(function (previous, current, index, array) { //迭代
return previous + current;
});
console.log(sum); // 10
这里我只尝试了几个个人觉得比较有用的方法,还有几个方法我没有尝试,有兴趣的朋友可以都去试一下这些方法都有什么功能。