js map循环总是得到最后一个item的值?

处理多个饼状图的option 但是return 出去的option 都是数组中最后一个数据的值 也不知道问题出在什么地方

 
let option = {
  tooltip: {
    trigger: 'item',
    formatter: '{a} <br/>{b}: {c} ({d}%)'
  },
  legend: {
    orient: 'vertical',
    left: '65%',  //图例距离左的距离
    y: 'center',  //图例上下居中
    textStyle: {
      color: "#fff"
    },
    // data: ['事件一 名称', '事件二 名称', '事件三 名称', '事件四 名称'],
    data: []
  },
  label: {
    show: true
  },
  grid: {
    top: 0,
    left: 0,
    right: 0,
    bottom: 0
  },
  series: [

    {
      // name: '访问来源',
      type: 'pie',
      radius: ['100%', '70%'],
      center: ['40%', '50%'],
      avoidLabelOverlap: false,

      label: {
        show: false,
        position: 'center'
      },
      emphasis: {
        label: {
          show: true,
          fontSize: '20',
          fontWeight: 'bold'
        }
      },
      // labelLine:{  
      //       normal:{  
      //            length:15,       // 指示线长度
      //            lineStyle: {
      //               color: "#595959"  // 指示线颜色
      //            }
      //       },
      //  },
      //  label: {
      //       normal: {
      //            textStyle: {
      //                  color: '#595959',    // 提示文字颜色
      //                  fontSize: 18        // 提示文字大小
      //            } 
      //      }
      //  },
      // data: [
      //   { value: 335, name: '事件一 名称' },
      //   { value: 310, name: '事件二 名称' },
      //   { value: 234, name: '事件三 名称' },
      //   { value: 135, name: '事件四 名称' }
      // ]
      data: []
    }
  ]
};

export default function (data) {
  console.log("list", data)
  let pieData = []
  let list = []
  if (data !== undefined) {
    data.map(item => {
      item.name = item.key;
      item.value = Number(item.value)
      pieData.push(item.key);
      console.log("pie", pieData)
      let obj = {}
      obj.value = item.value;
      obj.name = item.name;
      list.push(obj)

    });
  
  }

  
  option.series[0].data = list;

  option.legend.data = pieData;

  console.log("出去之前", option)
  return option
}
阅读 1.9k
1 个回答
export default function (data) {
  console.log("list", data)
  let pieData = []
  let list = []
  if (data !== undefined) {
    data.map(item => {
      item.name = item.key;
      item.value = Number(item.value)
      pieData.push(item.key);
      console.log("pie", pieData)
      let obj = {}
      obj.value = item.value;
      obj.name = item.name;
      list.push(obj)
    });
  }

  // 新建一个新的 option 对象
  let newOption = JSON.parse(JSON.stringify(option));
  
  newOption.series[0].data = list;
  newOption.legend.data = pieData;

  console.log("出去之前", newOption)
  return newOption
}

用箭头函数和对象解构:

export default function (data = []) {
  const pieData = data.map(item => item.key);
  const list = data.map(item => ({
    name: item.key,
    value: Number(item.value)
  }));

  return {
    ...option,
    legend: {
      ...option.legend,
      data: pieData
    },
    series: option.series.map(series => ({
      ...series,
      data: list
    }))
  };
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题