首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在nuxt应用程序中使用来自json的特定字段

仅在nuxt应用程序中使用来自json的特定字段
EN

Stack Overflow用户
提问于 2021-09-28 08:28:00
回答 3查看 69关注 0票数 0

通过使用asyncdata和axios,我从一个名为Knack的数据库中获取了一个json对象。

工作很好,但是整个响应是巨大的,在一些页面中,我只使用了例如10个字段,有时来自50+。

因此,我从knack抓取记录,然后使用v-for遍历并输出50+字段中的10个。

通过查看控制台,我可以看到整个json对象。

有没有一种方法可以像我一样获取json对象,而不是全部返回,遍历并创建一个包含我需要的字段的较小对象,然后返回该对象,然后在我的模板中执行v-for?基本上导致只有必需的字段在控制台中可见,并且对公众可见?

非常感谢,如果有人可以帮助代码样本。

EN

回答 3

Stack Overflow用户

发布于 2021-09-30 19:24:51

你可以这样做。

示例数据模型

代码语言:javascript
复制
 data() {
  return {
    // Required fields to filter data
    requiredFields: ["name", "phone", "email"],
    fields: {
      name: "Wade Mckenzie",
      phone: "1-278-483-8300",
      email: "ac.mattis.velit@magnisdisparturient.net",
      address: "971-2324 Id, Av.",
      list: 7,
      country: "Australia",
      postalZip: "422625",
      region: "Campania",
      text: "malesuada augue ut lacus. Nulla tincidunt, neque vitae semper egestas,",
      numberrange: 5,
      currency: "$9.91",
      alphanumeric: "TXQ00DEL5RP",
   },
  };
 }

计算属性

代码语言:javascript
复制
computed: {
  filteredData() {

    // Create an empty object
    let requiredData = {};

    // Loop over the entries
    for (const [key, value] of Object.entries(this.data)) {

      // Check if the property is a required field
      if (this.requiredFields.includes(key)) {
        requiredData[key] = value;
      }
    }
 
   return requiredData;
  },
}

模板

代码语言:javascript
复制
<div v-for="(value, name) in filteredData" :key="name">
  {{ name }}: {{ value }}
</div>

您可以查看working example.

票数 1
EN

Stack Overflow用户

发布于 2021-09-28 09:07:05

您可以在计算属性中执行此操作。

代码语言:javascript
复制
computed(){
    getCustomObject(){

        let customObject = {};
        for(let property in yourJsonObject){
            if(property == 'the field you want'){
                customObject[`${property}`] = yourJsonObject[property]
            }
        }
        
        return customObject;
    }
}

通过这种方式,您可以获得所需的特定字段。但是您必须通过在if语句中放置||来指定它们。

在模板中,你可以像这样简单地呈现它:

代码语言:javascript
复制
<div v-for="(item,key,index) in getCustomObject" :key="index">
    //Render data...
</div>

或者,如果你只想要一个特定数量的字段,比如50个字段中的10个,你可以这样做:

代码语言:javascript
复制
computed(){
    getCustomObject(){

        let customObject = {};
        Object.entries(yourJsonObject).forEach(([key,value],index) => {
            if(index<10){
              customObject[`${key}`] = value;
            }
        })
        
        return customObject;
    }
}
票数 0
EN

Stack Overflow用户

发布于 2021-09-28 09:41:57

尝试对象解构:

代码语言:javascript
复制
const jsonObject = { f1: 1, f2: 2, f3: 3, f4: 4, f5: 5, f6: 6, f7: 7, f8: 8, f9: 9, f10: 10};
const neededFields = (({ f2, f5, f7 }) => ({ f2, f5, f7 }))(jsonObject);

console.log(neededFields);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69358256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档