这是要实现页面的原来样子,直接从数据库获取的时间,我想让其最新时间排在上面
前端页面
<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)
},
}
大家帮我看看啥问题
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