为了账号安全,请及时绑定邮箱和手机立即绑定

Vue 按表中选定的属性对对象数据进行排序

Vue 按表中选定的属性对对象数据进行排序

蓝山帝景 2023-03-10 16:48:59
我从我的 api json 对象列表中得到这样的信息:"object123": {  "selected": false,   "value": 0.54}, 在前端,我有一个表格,其中我用复选框显示这些数据,如何通过这个选择属性对这些数据进行排序?你能举个小例子吗?我试过sortedData: function() {  if(this.calculated) {    return this.calculated.sort(function(a, b) {      return a.selected > b.selected    })  }}但后来桌子是空的。
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您不能将sort()函数用于对象。为了使您的代码工作,您应该转换this.calculated为数组。


您可以使用此代码片段将对象转换为数组。


let calculated = {

  "object1": {

    "selected": false,

    "value": 1

  },

  "object2": {

    "selected": false,

    "value": 20

  },

  "object3": {

    "selected": false,

    "value": 4

  },

  "object4": {

    "selected": false,

    "value": 24

  },

  "object5": {

    "selected": false,

    "value": 6

  },

  "object6": {

    "selected": false,

    "value": 0.26

  },

  "object7": {

    "selected": true,

    "value": 1.52

  },

  "object8": {

    "selected": false,

    "value": 0.54

  },

  "object9": {

    "selected": false,

    "value": 4.27

  }

}


let calculatedArray = []


for (const [key, value] of Object.entries(calculated)) {

  calculatedArray.push({

    id: key,

    ...value

  })

}


sortedData = function() {

  if(calculatedArray) {

    return calculatedArray.sort(function(a, b) {

      return b.selected - a.selected

    })

  } else {

    return []

  }

}


console.log(sortedData())

console.log(calculatedArray)


查看完整回答
反对 回复 2023-03-10
  • 1 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信