【问题标题】:How to ignore null/undefined value when mapping on an array? [duplicate]映射数组时如何忽略空值/未定义值? [复制]
【发布时间】:2021-12-08 12:38:22
【问题描述】:

我该如何实现?

我想通过计划数组进行映射,并为每个项目呈现一个列表。虽然这是有效的,但如果我们在标题上有 null 或 undefined,我们仍然有 4 个 Li 标签渲染,第二个没有任何内容。但是如果标题为空/未定义,我该如何实现这个对象被忽略并移动到下一个对象并渲染数组的其余部分。

希望我的解释清楚。

import React from "react";


const App = (props) => {

  const plans = [
    {
      title: "Starter",
      plan: "plan_0",
    },
    { title: undefined,
      plan: "plan_1A",
    },
    {
      title: "Classic",
      plan: "plan_2A",
    },
    {
      title: "Premium",
      plan: "plan_3A",
    },
  ];


  return (
    <div>

      <h1>Notes</h1>
   
      <ul>
        {plans.map((plan, i) =>
            <li className="something" key={i}>
              <span className="somethingels">{plan.title}</span>
            </li>
        )}

      </ul>

    </div>
  );
};

export default App;

目前它的渲染是这样的:

  • 启动器
  • 经典
  • 高级版
  • <li>Starter</li>
    <li></li>
    <li>Classic</li>
    <li>Premium</li>
    

    【问题讨论】:

    • 添加.filter() 方法。示例.filter((el) =&gt; el)

    标签: javascript arrays reactjs


    【解决方案1】:

    只需添加一个条件语句就可以了:

        {plans.map((plan, i) =>
            { plan.title &&
                <li className="something" key={i}>
                    <span className="somethingels">{plan.title}</span>
                </li>
            }
        )}
    

    【讨论】:

      【解决方案2】:

      在呈现列表项之前检查该计划是否具有标题属性:)

        <ul>
          {plans.map(
            (plan, i) =>
              plan.title && (
                <li className="something" key={i}>
                  <span className="somethingels">{plan.title}</span>
                </li>
              )
          )}
        </ul>
      

      【讨论】:

      • 如果我理解正确,就像:如果 plan.title 存在,那么继续渲染它。对吗?
      • 正是 ? 如果 plan.title 返回truthy,那么它会继续执行 '&&' 运算符之后的内容。否则,它将跳过那段代码
      猜你喜欢
      • 2020-11-25
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 2020-06-11
      • 2020-01-11
      相关资源
      最近更新 更多