记录前端数据处理

最近写的项目都需要前端处理数据,我才知道自己数据结构重组能力有多差

1、案例一:我写了一个小程序答题功能

后端给我返回的数据结构是这样的

	"data": [{
		"answer": ["绿色", "在国外; 到国外", " 空白处,空格;遗忘; 空弹;", "演员;"],
		"freq": 2,
		"type": "en2cn",
		"word": "green"
	}, {
		"answer": ["花; 花朵; 开花植物; (已摘) 带梗的花;", "买得起; (有时间) 做,能做; 承担得起(后果); ", "(鼓的) 一击; (翅的) 一振; (心脏等的) 跳动; 击鼓声; ", "(使) 上岸; 把…拖上岸;"],
		"freq": 2,
		"type": "en2cn",
		"word": "flower"
	}]

answer是答案,Word是题目,type是题目类型

后台默认正确答案是answer数组中的第一项

然后,后台让我打乱顺序。所以我遇到了问题:

问题一:我应该怎么记录下正确答案,

问题二:当我打乱顺序的时候,我怎么找到正确答案

记录正确答案的代码如下

  res.data.data.forEach(item => {
              item.isAnswer = item.answer[0] //把正确答案记录下来
              let arr = item.answer
              let len = arr.length
              let newArr = [] //用来存放打乱后的数组
              for (var i = 0; i < len; i++) {
                let index = Math.floor(Math.random() * arr.length) //随机打乱
                newArr.push(arr[index])
                if (arr[index] === item.isAnswer) {
                  item.isAnswerIndex = i //记录下被打乱后正确答案的下标
                }
                arr.splice(index, 1)
              }
              item.answer = newArr
            })
            this.questionList = res.data.data

此时,新返回的数据是这样的

[{
answer: ["演员;", "绿色","在国外; 到国外", " 空白处,空格;遗忘; 空弹;"],
length: 4,
freq: 2,
isAnswer: "绿色",
isAnswerIndex: 1,
type: "en2cn",
word: "green"}]

isAnswerIndex就是正确答案的索引,此时只需要绑定个点击事件,把点击的索引和正确答案对比相不相等,相等就是正确答案

点击事件和结构如下

    handleAnswerClick (item, index, word) {
        let quetionLength = (this.questionList.length - 1)
        let percent = Math.ceil((1 / (this.questionList.length)) * 100)
        this.percentValue += percent
        this.activeIndex = index
     
        if (index === item) {
          console.log('正确')
        } else {
          console.log('错误')
        }
      },





template部分


<ul class="sv-question-answer">
           <li v-for="(item,index) in question.answer" @click="handleAnswerClick(question.isAnswerIndex,index,question.word)" :ref="index">{{item}}</li>
         </ul>

效果图

2、案例二

我要渲染echarts类似下图的效果

 

但是 后台给我返回的数据结构如下

然后我数据重构了一下

代码如下

 let data0 = res.data[0].workplaceItemWorkVOS
              let ser = []
              data0.forEach(lengendItem => {
                let obj = {
                  name: lengendItem.name,
                  stack: lengendItem.name,
                  type: 'bar',
                  barMaxWidth: 50,
                  data: []
                }
                ser.push(obj)
                legend.push(lengendItem.name) //lengend
              })
              this.echartsOption.legend = legend
              res.data.forEach(item1 => {
                xArry.push(item1.date)
                item1.workplaceItemWorkVOS.forEach((list, index) => {
                  ser[index].data.push(list.workers) //其实只要理解这步就好了
                })
              })
              this.echartsOption.series = ser
              this.echartsOption.xData = xArry

项目没启动就不放效果图了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值