根据 Vue 2 中的响应内容替换值?

Posted

技术标签:

【中文标题】根据 Vue 2 中的响应内容替换值?【英文标题】:Substitute values depending on response content in Vue 2? 【发布时间】:2021-10-10 16:15:04 【问题描述】:

瞄准

我正在尝试通过从数据库中获取数据的 API 来检索数据。当我检索数据时,我收到如下所示的响应(这是我的模拟数据,存储在 mock.js 文件中)-

[
 id: '2000', description: 'Big Company and Co.', fooType: 0,
 id: '2213', description: '3g Capital', fooType: 1,
 id: '2936', description: 'AAA Pokemon Company', fooType: 2,
 id: '3456', description: 'World Wrestling Entertainment', fooType: 0,
 id: '4040', description: 'Brave Old Company', fooType: 0,
 id: '9367', description: 'The Wild Wild Blessed', fooType: 1
]

我试图在收到响应后更改响应,以便 fooType 是 3 个值之一,具体取决于 fooType 返回的值是 0、1 还是 2。 API 只会将 fooType 发送为 0、1 或 2。

例如fooType: 1 => fooType: 'abcd', fooType: 2 => fooType: 'efg', fooType: 0 => fooType: 'abcdefgh'

更多信息

下面标签中列出的项目是我上面数据中的(键,值)的映射,它被正在使用的组件呈现为表中的行。

<NiceDataTable
    striped
    small
    fixed
    :items="fooData"
    :fields="fields"
    add-table-classes="table-bordered"
/>

虽然我可能将一个相当简单的问题复杂化了,但我们将不胜感激。

问题

如何根据初始响应中的值转换特定响应键的值(不触及后端 API)?

【问题讨论】:

[ id: '2000', description: 'Big Company and Co.', fooType: 0, id: '2213', description: '3g Capital', fooType: 1, id: '2936', description: 'AAA Pokemon Company', fooType: 2, id: '3456', description: 'World Wrestling Entertainment', fooType: 0, id: '4040', description: 'Brave Old Company', fooType: 0, id: '9367', description: 'The Wild Wild Blessed', fooType: 1 ].map(responseItem =&gt; const map = 0: "abcdefgh", 1: "abcd", 2: "efg" return ...responseItem, fooType: map[responseItem.fooType] ) 请将此作为答案,如果它运行我会接受,我相信它会@amidnikmal 我已经尝试过这个以及它的许多版本,我能得到的最好的结果是 3 个未定义的对象:未定义,我需要一个数组对象数组的响应 @amidnikmal 【参考方案1】:

试试这个代码

const data = [ id: '2000', description: 'Big Company and Co.', fooType: 0 ,  id: '2213', description: '3g Capital', fooType: 1 ,  id: '2936', description: 'AAA Pokemon Company', fooType: 2 ,  id: '3456', description: 'World Wrestling Entertainment', fooType: 0 ,  id: '4040', description: 'Brave Old Company', fooType: 0 ,  id: '9367', description: 'The Wild Wild Blessed', fooType: 1 ];
const map =  0: "abcdefgh", 1: "abcd", 2: "efg" ;
const output = data.map(responseItem => 
  return  ...responseItem, fooType: map[responseItem.fooType] 
);
console.log(output)

【讨论】:

谢谢你,重构这很奏效。我欠你一个

以上是关于根据 Vue 2 中的响应内容替换值?的主要内容,如果未能解决你的问题,请参考以下文章

Vue指令概述

Vue指令概述

Vue指令概述

React虚拟dom中的key值

Vue指令概述

vue中的可编辑div实现高度自适应