怎么让数据从大到小排序啊,然后把不要的城市去掉
<template>
<div id="heal" style=":width: 1000px;height: 600px;"></div>
</template>
<script>
import * as echarts from 'echarts'
import axios from 'axios';
export default{
name:'BarGraph',
data () {
return {
items:''
}
},
mounted(){
var mychat=echarts.init(document.getElementById('heal'))
var url='http://localhost:8081/vueData/details'
var citys=[],heal=[]
axios.get(url).then((json)=>{
let data=json.data.filter(item=>item.province==='广东')
citys=data.map(item=>item.city)
heal=data.map(item=>item.heal)
mychat.setOption({
title:{
text:'广东最五个最高治愈城市',
left:'center'
},
xAxis:{
type:'category',
data:citys.slice(0,5)
},
yAxis:{
type:'value'
},
series:{
type:'bar',
data:heal.slice(0,5)
}
})
console.log(citys)
console.log(heal)
})
}
}
</script>
这个图表的数据需要在数据库查出每个学院有多少人,所以数据请求是需要时间的。也证明了执行图表渲染的方法并不是响应式的数据,但是vue2是响应式的数据,但我们可以通过监听数据变化来执行图表渲染的方法,此时图表渲染里的数据就会有我们请求返回过来的数据了。
回答:
可以通过对数据进行处理,将需要展示的城市的数据筛选出来并排序,然后再将处理后的数据传入图表中进行展示。
具体步骤如下:
let data = [
{name: '上海', value: 100},
{name: '北京', value: 80},
{name: '广州', value: 50},
{name: '深圳', value: 60},
{name: '南京', value: 30},
]
let showData = data.filter(item => {
// 在这里根据需要展示的城市进行筛选,这里展示值大于等于60的城市
return item.value >= 60
}).sort((a, b) => {
// 按照值从大到小排序
return b.value - a.value
})
console.log(showData) // 输出 [{name: '上海', value: 100}, {name: '北京', value: 80}, {name: '深圳', value: 60}]
<template>
<div :class="className" :style="{height:height,width:width}" ref="chart"></div>
</template>
<script>
import echarts from 'echarts'
export default {
props: {
data: {
type: Array,
default() {
return []
}
}
},
data() {
return {
chart: null
}
},
watch: {
data: {
handler(newval, oldval) {
if(newval && newval.length) {
this.initChart()
}
return newval
},
deep: true
}
},
mounted () {
window.addEventListener("resize", () => {
if (this.chart) {
this.chart.resize()
}
});
},
methods: {
initChart() {
if(!this.chart) {
this.chart = echarts.init(this.$refs.chart)
}
this.chart.setOption({
// 在这里配置图表的option,参数可根据实际情况调整
xAxis: {
type: 'category',
data: this.data.map(item => item.name)
},
yAxis: {
type: 'value'
},
series: [{
data: this.data.map(item => item.value),
type: 'bar'
}]
})
}
}
}
</script>
在父组件中使用子组件,并传入需要展示的数据即可,示例代码如下:
<template>
<div>
<echart-chart :data="showData" />
</div>
</template>
<script>
import EchartChart from './components/EchartChart'
export default {
components: {
EchartChart
},
data() {
return {
data: [
{name: '上海', value: 100},
{name: '北京', value: 80},
{name: '广州', value: 50},
{name: '深圳', value: 60},
{name: '南京', value: 30},
]
}
},
computed: {
showData() {
// 在这里获取需要展示的数据
return this.data.filter(item => {
// 在这里根据需要展示的城市进行筛选,这里展示值大于等于60的城市
return item.value >= 60
}).sort((a, b) => {
// 按照值从大到小排序
return b.value - a.value
})
}
}
}
</script>
sort方法排序,然后在进行数据筛选 去掉不要的数据
就是对 data进行操作,你可以先 用filter过滤 。然后再进行排序