ES6之Iterator

ES6之Iterator

​ ES6如何让不支持遍历的数据结构“可遍历”呢?

let authors={
	allAuthors:{
		fiction:['dhede','fefe','wqeqw'],
		science:['efg','ffda','feaf'],
		fantasy:['w','dsads','wef']
	},
	Address:[]
}
//建立接口
authors[Symbol.iterator]=function(){
	let allAuthors=this.allAuthors
	let keys=Reflect.ownKeys(allAuthors)  //返回一个由目标对象自身的属性键组成的数组。
	let values=[]
	return{
		next(){
			if(!values.length){
				if(keys.length){
					values=allAuthors[keys[0]]
					keys.shift()  //剔除数据
				}
			}
			return {
				done:!values.length,
				value:values.shift()
			}
		}
	}
}
let r=[]
for (let v of authors){
	r.push(v)
}
//遍历出所有名字["dhede", "fefe", "wqeqw", "efg", "ffda", "feaf", "w", "dsads", "wef"]
var dataMap = {};
function dataFormatter(obj) {
    var pList = ['北京','天津','河北'];
    var temp;
    for (var year = 2009; year <= 2011; year++) {
        var max = 0;
        var sum = 0;
        temp = obj[year];
        for (var i = 0, l = temp.length; i < l; i++) {
            max = Math.max(max, temp[i]);
            sum += temp[i];
            obj[year][i] = {
                name: pList[i],
                value: temp[i]
            };
        }
        obj[year + 'max'] = Math.floor(max / 100) * 100;
        obj[year + 'sum'] = sum;
    }
    return obj;
}
dataMap.dataSI = dataFormatter({
    2011:[1233,3434,5467],
    2010:[2324,5678,1233],
    2009:[2334,5225,1245]
});
dataMap.dataTI = dataFormatter({
    2011:[1563,3424,5167],
    2010:[2224,4678,2233],
    2009:[1334,4225,2245]
});
option = {
    baseOption:{
           timeline: {
            axisType: 'category',
            autoPlay: false,
            // currentIndex: 2,
            playInterval: 1000,
            data: [
               '2009-01-01','2010-01-01', '2011-01-01'
            ],
            label: {
                formatter : function(s) {
                    return (new Date(s)).getFullYear();
                }
            }
        },
          grid: {
            top: 80,
            bottom: 100,
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    type: 'shadow',
                    label: {
                        show: true,
                        formatter: function (params) {
                            return params.value.replace('\n', '');
                        }
                    }
                }
            }
        },
         xAxis: [
            {
                'type':'category',
                'axisLabel':{'interval':0},
                'data':['北京','天津','河北'],
                splitLine: {show: false}
            }
        ],
        yAxis: [
            {
                type: 'value',
                name: 'GDP(亿元)'
            }
        ],
   series: [
            {name: '第二产业', type: 'line'},
            {name: '第三产业', type: 'line'},
        ]
    },
    options:[
        {
            title: {text: '2009全国宏观经济指标'},
            series: [
                {data: dataMap.dataSI['2009']},
                {data: dataMap.dataTI['2009']}
            ]
        },
        {
            title : {text: '2010全国宏观经济指标'},
            series : [
                {data: dataMap.dataSI['2010']},
                {data: dataMap.dataTI['2010']}
            ]
        },
        {
            title : {text: '2011全国宏观经济指标'},
            series : [
                {data: dataMap.dataSI['2011']},
                {data: dataMap.dataTI['2011']}
            ]
        }
        ]
    
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值