首页 > 解决方案 > 使用未定义字段映射数组

问题描述

我正在实现一个哈希表,其中一些字段显然未定义,因为它们尚未被填充。

我还想显示哈希表的每个字段。但是,当我通过数组映射时,该函数仅返回未定义字段的 div,无法弄清楚如何强制映射函数为未定义字段显示 Empty。

现在看起来像这样:

const displayTable = () => {
  return storage.map(item => {
    if (item == null) {
      return <div>undefined</div>
    }
    return (
      <div>
        <p>{item[0][0]}</p>
      </div>
    );
  });

随着存储[undefined, undefined, undefined, Array[1], undefined, Array[1], undefined, undefined, undefined, Array[1]]

因此,我最终只得到了三个渲染的 div。

标签: javascriptreactjs

解决方案


在 Javascript 中,undefined未定义不是一回事,尽管尝试访问对象的未定义属性将返回值undefined。考虑到 JS 也有null,我认为这是 JS 最混乱的事情之一。

您可以通过在开始填充数组之前填充数组来解决您的问题:

storage.fill(null)

(请注意,storage.fill(undefined)这也可以!Javascript 不是很棒吗?:p)

当然,这仅在数组具有静态已知长度时才有效。如果长度是动态的,则必须执行以下操作:

const displayTable = () => {
  const rendered = [];
  for (let i = 0; i < storage.length; i++) {
    if (storage[i] == null) {
      rendered.push(<div>undefined</div>);
    } else {
      rendered.push(
        <div>
          <p>{storage[i][0][0]}</p>
        </div>
      );
    }
  }
  return rendered;
}

推荐阅读