【问题标题】:assigning values to a computed property vuejs将值分配给计算属性 vuejs
【发布时间】:2020-07-23 22:22:23
【问题描述】:

我有这个对象数组:

columnData=[
  {Address: "1 fake st"},
  {Application: "bts sport"},
  {Description: "good"},
  {Issue Date: "2012-08-09"},
  {Status: "active"},
  {Unit: null}
]

然后我想使用计算属性将一些 columnData 元素分配给新的对象数组,新数组应如下所示:

newData= [
  {
    label: "Address",
    value: "1 fake st"
  },
  {
    label: "Descripttion",
    value: "good"
  },
  {
    label: "Unit",
    value: null
  }
]

我试过这段代码,但它不起作用:

computed:{
    newData() {
      return [
        {
          label: Object.keys(this.columnData[0]),
          value: Object.values(this.columnData[0])
        },
        {
          label: Object.keys(this.columnData[2]),
          value: Object.values(this.columnData[2])
        },
        {
          label: Object.keys(this.columnData[5]),
          value: Object.values(this.columnData[5])
        }
      ];
    }
}

如何按照我希望使用计算属性的方式创建 newData 数组?

【问题讨论】:

  • 如果原始对象之一包含多个属性,预期的输出是什么?还是没有属性?还是保证每个对象只包含一个属性?另外,您如何确定输入中的哪些对象包含在输出中?
  • 我的原始对象保证是columnData的样子
  • Object.keys(this.columnData[0]) 返回一个数组,可能你喜欢做的是Object.keys(this.columnData[0])[0];其他值也有同样的问题。

标签: javascript arrays vue.js key key-value


【解决方案1】:

需要Object.keys(obj)[0]Object.values(obj)[0],分别获取数组中每个对象的第一个属性名和值。

const columnData=[
  {Address: "1 fake st"},
  {Application: "bts sport"},
  {Description: "good"},
  {"Issue Date": "2012-08-09"},
  {Status: "active"},
  {Unit: null}
];
const newData = columnData.slice(0,2).concat(columnData[5]).map(obj=>({
  label: Object.keys(obj)[0],
  value: Object.values(obj)[0]
}));
console.log(newData);

您也可以使用Object.entries 在一个数组中同时获取属性名称和值。

const columnData=[
  {Address: "1 fake st"},
  {Application: "bts sport"},
  {Description: "good"},
  {"Issue Date": "2012-08-09"},
  {Status: "active"},
  {Unit: null}
];
const newData = columnData.slice(0,2).concat(columnData[5]).map(obj=>{
  const [label, value] = Object.entries(obj)[0];
  return {label, value};
});
console.log(newData);

【讨论】:

  • 谢谢,但正如我提到的,我希望我的数组包含“地址”、“描述”和“单位”,而不是整个值。像这样:newData= [ {label: "Address", value: "1 fake st" }, {label: "Descripttion", value: "good"}, { label: "Unit", value: null }]
猜你喜欢
  • 2019-07-14
  • 2020-02-05
  • 2017-10-17
  • 2018-02-21
  • 2017-08-23
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
相关资源
最近更新 更多