第三张卡与第二张卡所学要的知识差不太多,只是点击开始按钮要自动生成一个竞价名,所以存储的时候用 的下面的代码
var bidding_each_name = {bid_sign_up: bidding_sign_up, bid_name: (parseInt(each_bidding_list_name.length) + 1)} //把竞价列表的长度自动加一 bidding_lists_name.unshift(bidding_each_name) localStorage.setItem("bidding_lists_name", JSON.stringify(bidding_lists_name))
其他的没什么不同,知识开始按钮的可点与否又加了几个判断条件,所以学习一下underscore
1.map
_.map(list, iterator, [context])
映射 list 里的每一个值, 通过一个转换函数(iterator)产生一个新的数组. 如果有原生的 map 函数, 将用之代替. 如果 list 是一个 JavaScript 对象, iterator的参数将会是 (value, key, list).
例子
var price_count_infos = _.map(bid_resolve_count, function (value, key) {
return {"price": key, "count": value}})
2 .countBy
_.countBy(list, iterator)
把一个数组分组并返回每一组内对象个数. 与 groupBy 相似, 但不是返回一组值, 而是组内对象的个数.
例子
var bid_resolve_count = _.countBy(this_resolve_bidding_messages,function (messages_des) { return messages_des.money});
3.sortBy
_.sortBy(list, iterator, [context])
返回一个经过排序的 list 副本, 用升序排列 iterator 返回的值. 迭代器也可以用字符串的属性来进行比较(如length).
例子
_.sortBy([1, 2, 3, 4, 5, 6], function(num){ return Math.sin(num); }); => [5, 4, 6, 3, 1, 2]
4.find
_.find(list, iterator, [context])
从list里进行逐项查找,返回第一个符合测试(iterator)条件的元素,如果没有的话则返回undefined。 此函数只返回第一个符合条件的元素,并不会遍历整个list。
例子
_.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); => 2
这几个underscore里面的方法挺好用的,一开始找返回值不是很顺利,就多 console.log()几次。
还发现竞价短信处理时要确保收到的竞价是price,所以用下面代码又处理了一下
if (message.search(/jj/i) == 0) { var bidding_money = message.replace(/jj/gi, "") } if (isNaN(bidding_money)==false) {}//如果bidding_money里面的内容是数字就往下进行