[size=medium]在做练习时需要对数据进行groupby操作,然后把groupby的结果的key值和value的长度取出来存到一个数组中,后面需要显示这个数组的内容。最开始,想到的是用each来做,可是却显示不出来,后来才知道each是没有返回值的,这块需要用map来实现。下面说一下each和map的用法。
介绍each和map之前,先简单介绍一下Underscore。
Underscore 是一个JavaScript实用库,提供了类似Prototype.js (或 Ruby)的一些功能。Underscore提供了80多个函数,包括经常用到的filter,map,each,max,min,find,sortby,groupby,first.
提供一个网址:http://www.css88.com/doc/underscore/
里面有比较详细的介绍和举例。
我在使用map和each的时候遇到了问题,所以在这里总结一下map和each的具体用法和区别。
map和each的主要区别是:map是有返回值的,而each没有返回值。举个例子:
如果执行以下代码:[/size]
[size=medium]如果执行以下代码:[/size]
[size=medium]所以,如果需要有返回值时,不能用each,需要用map。
我的代码最后修改为:[/size]
介绍each和map之前,先简单介绍一下Underscore。
Underscore 是一个JavaScript实用库,提供了类似Prototype.js (或 Ruby)的一些功能。Underscore提供了80多个函数,包括经常用到的filter,map,each,max,min,find,sortby,groupby,first.
提供一个网址:http://www.css88.com/doc/underscore/
里面有比较详细的介绍和举例。
我在使用map和each的时候遇到了问题,所以在这里总结一下map和each的具体用法和区别。
map和each的主要区别是:map是有返回值的,而each没有返回值。举个例子:
如果执行以下代码:[/size]
_.each([1,2,3],alert);
_.map([1,2,3],alert); //此时执行效果是相同的,因为只是弹出提示框,不需要返回值。
[size=medium]如果执行以下代码:[/size]
_.each([1,2,3],function(num){return num *2}); //没有运行结果。
_.map([1,2,3],function(num){return num *2}); //运行结果:[2,4,6]
[size=medium]所以,如果需要有返回值时,不能用each,需要用map。
我的代码最后修改为:[/size]
PriceProcess.price_statistics = function(){
var prices = JSON.parse(localStorage.getItem('prices_statistics_array'));
return _.map(prices, function(value, key){
var price_statistics = {};
price_statistics['price'] = key;
price_statistics['count'] = value.length;
return price_statistics;
});
}