You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中使用reverse()反转JSON数据失败,求Vue2替代方案

解决Vue项目中反转JSON数组顺序的问题

嘿,我来帮你搞定这个反转数组的问题~首先得纠正几个小误区,然后给你几个可行的方案:

先说说你代码里的问题

你原来的代码里这一行完全写反啦:

_this.json.reverse() = json;

首先,_this.json一开始是null,根本没法调用reverse()方法;其次,赋值的逻辑搞反了——应该是把反转后的数组赋值给_this.json,而不是反过来。另外,reverse()是JavaScript原生数组的方法,Vue 2并没有弃用它哦,只是你用错了方式😉

可行的解决方案

方案1:获取数据后反转再赋值

拿到JSON数据后,先反转数组(如果不想修改原数据,就先复制一份再反转),然后赋值给Vue的data属性:

new Vue({
  el: '#vueapp',
  data: {
    json: null
  },
  created: function () {
    var _this = this;
    $.getJSON('https://www.example.com/myfeed.json', function (json) {
      // 方式1:直接反转原数组并赋值(会修改原json数组)
      _this.json = json.reverse();
      
      // 方式2:复制数组后再反转(不修改原数组,推荐)
      // _this.json = json.slice().reverse();
    });
  }
});

slice()方法会创建一个原数组的浅拷贝,再调用reverse()就不会影响原始的数据源啦。

方案2:用计算属性实现(不修改原数据源)

如果不想改变data里的原始数组,只是在页面展示时反转顺序,推荐用计算属性,它会自动响应数据变化:

new Vue({
  el: '#vueapp',
  data: {
    json: null
  },
  created: function () {
    var _this = this;
    $.getJSON('https://www.example.com/myfeed.json', function (json) {
      _this.json = json;
    });
  },
  computed: {
    reversedJson() {
      // 当json不为null时,复制并反转;否则返回空数组
      return this.json ? this.json.slice().reverse() : [];
    }
  }
});

然后在模板里直接使用reversedJson来渲染数据就行,比如:

<div v-for="item in reversedJson" :key="item.id">{{ item.content }}</div>

这样就能实现你想要的效果——让JSON里的最后一项(比如山间房屋)在页面加载时最先显示啦。

内容的提问来源于stack exchange,提问作者Gracie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:26:02