首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >映射对象数组React

映射对象数组React
EN

Stack Overflow用户
提问于 2020-12-27 07:15:45
回答 2查看 88关注 0票数 0

所以我现在遇到了一个小问题。所以我有一个从JSON获取数据的组件,我有Link,但显示了20多倍。与我在JSON文件中拥有的对象数量相同。我知道这就是{data.map((postData)的问题所在,它映射了JSON文件中的所有对象,当我只想显示(classEpriceEimageE)的时候。

代码语言:javascript
复制
import React from "react";
import data from "./data.json";
import { Link } from "react-router-dom";
function E() {
  return (
    <div>
      {data.map((postData) => {
        return (
          <div key={postData.id} className="m-4 bg-blue-100 rounded-xl p-8 ">
            <div>
              <Link
                to={`/payment/${postData.id}`}
                className="py-1 px-2 text-black-600 h-10  ml-24 mt-32 bg-white w- 
            36 rounded-full focus:outline-none focus:ring-2 focus:ring-gray-600"
              >
                Buy Now
              </Link>
              <img
                alt=""
                className="w-screen object-contain"
                src={postData.imageE}
              ></img>
              <h1 className=" ml-24 md:text-5xl sm:text-5xl  top-8">
                {postData.classE}
              </h1>
              <h1 className="text-base font-mono ml-24 top-24">
                {postData.priceE}
              </h1>
            </div>
          </div>
        );
      })}
    </div>
  );
}

export default E;

JSON文件

代码语言:javascript
复制
[
  {
    "id": 0,
    "class": "A-Class",
    "Info": "A is the cheapest one ",
    "imageA": "./ModImages/Aclass.jpg",
    "textA": "fdsd",
    "trefuA": "fdsd",
    "optionA": "fdsd"
  },
  {
    "id": 1,
    "classE": "E-Class",
    "imageE": "./ModImages/Eclass.jpg",
    "priceE": "$43,600"
  }
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-27 08:51:19

如果只想显示具有属性classEimageEpriceE的对象,则需要过滤掉不感兴趣的对象。

更改此行:

代码语言:javascript
复制
{data.map((postData) => {

至:

代码语言:javascript
复制
{data.filter(d =>
  d.hasOwnProperty('classE') &&
  d.hasOwnProperty('imageE') &&
  d.hasOwnProperty('priceE'))
  .map((postData) => {

这将只显示您想要的对象。

票数 0
EN

Stack Overflow用户

发布于 2020-12-27 13:05:20

试试这个:

代码语言:javascript
复制
{data.filter(d =>
  d.classE &&
  d.imageE &&
  d.priceE) //FILTER FIRST
  .map((postData) => { //THEN MAP
  //CODE HERE
  })
}

首先过滤数据,然后对其进行映射

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

https://stackoverflow.com/questions/65461560

复制
相关文章

相似问题

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