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']}
]
}
]
};