vue时间排序写的方法不生效

vue时间排序写的方法不生效

这是要实现页面的原来样子,直接从数据库获取的时间,我想让其最新时间排在上面

img

这是获取时间的代码和我写的方法
前端页面
<li v-for="(item,index) in message" :key="index" @mouseover="changeClass(index)">
<a :href="'/index/cms/xq?id='+item.id">{{item.new}}</a>
<span class="ul-data" @change="Sort">{{item.data}}</span>
 </li> 


方法
var arts1=eval({$arts1|json_encode=true});
var app = new Vue({
  el: '#app',
  data: {
    isActive: 0,
    news:['{$tabone[0]["title"]}','{$tabone[1]["title"]}','{$tabone[2]["title"]}'],
    message: arts1[0],
    message1:arts1[1],
    message2:arts1[2],
    nowIndex:0,
    newIndex:0,
    isActives:0,
  },
  methods:{
      // 对时间进行排序
      Sort(){
            this.arts1.sort(function(a, b) {
                    let obj1 = a.data
                    let obj2 = b.data
                    const val1 = new Date(obj1).getTime()
                    const val2 = new Date(obj2).getTime()
                    return val1 - val2
                    // return val2 - val1
                  });
                  console.log(this.arts1)
          },
}
运行后什么反应也没有
用了点击事件调了下,又报了这个错误

img

大家帮我看看啥问题

1.可以的话 后端返回做个 排序给你

  1. 我试了一下 没问题 ,你得代码
 let arr = [
        {
            data: "2022-01-21"
        },
        {
            data: "2022-06-22"
        },
        {
            data: "2022-06-13"
        },
        
    ];

    arr.sort(function (a, b) {
        let obj1 = a.data
        let obj2 = b.data
        const val1 = new Date(obj1).getTime()
        const val2 = new Date(obj2).getTime()
        return val1 - val2
    })
   console.log(arr)

根据 你的报错 sort 未定义的属性 来看 。说明arts1 不是一个 数组

arts1是多维数组

1.你可以把获取到的数组对象进行一遍forEach循环,把日期转换成时间戳,然后对时间戳进行排序,实例代码图下:


```javascript
<script>
            let arr = [{
                    time: '2022-08-15',
                },
                {
                    time: '2022-08-10',
                },
                {
                    time: '2022-07-15'
                }
            ]
            arr.forEach(item => {
                item.second = +new Date(item.time)
            })
            arr.sort((a, b) => {
                return a.second - b.second
            })
            console.log(arr);
        </script>

```

arts1是个二维数组 没法用sort。把每个日期取出来放到一个数组里再sort