当前位置: 首页 > 知识库问答 >
问题:

React. JS-处理空/未定义大小写,同时将JSON对象显示为键和值

阎阎宝
2023-03-14

我有下面的代码,它执行嵌套JSON的所有键和值。它的工作正常,但是每当任何键的值为空时,代码就会在减少函数处中断。我也想显示空值。我试图在其他情况下处理空和未定义的场景,但这不起作用。下面是我写的代码。这一定是我错过的一个小变化。

  const myObj = {
      "key1": "value1",
      "key2": null,
      "key3": "value3",
      "key4": {
        "k1": "val1",
        "k2": {
          "p1": "v1",
          "p2": "v2",
          "p3": "v3"
        }
      }
    }


class Details extends React.component{
constructor(){
  this.getValues = this.getValues.bind(this);
}
getValues() {
     return (
        <div key={k} className="row">
            <div className="col-xs-6">{k}</div>
            <div className="col-xs-6">{v}</div>
        </div>
    )
    }

generateData(myObj) {

        const newData = Object.keys(myObj).reduce((result, currentKey) => {
          if (typeof myObj[currentKey] === 'string' || myObj[currentKey] instanceof String) {
            const elementToPush = getValues(currentKey, myObj[currentKey]);
            result.push(elementToPush);
          } else {
            const nested = generateData(myObj[currentKey]);
            result.push(...nested);
          }
          return result;
        }, []);
        return newData;
      }

render() {
    return (
        <div>
            <Header />
            <div className="content">
                {this.generateData(myObj)}
            </div>
        </div>
    )
}
}

共有1个答案

程和蔼
2023-03-14

这是你所期待的吗?

 const newData = Object.keys(myObj).reduce((result, currentKey) => {
          if (typeof myObj[currentKey] === 'string' || myObj[currentKey] instanceof String) {
            const elementToPush = getValues(currentKey, myObj[currentKey]);
            result.push(elementToPush);
          } else if(!myObj[currentKey]) {
            const nullElementToPush = getValues(currentKey, "null");
            result.push(nullElementToPush);
          } else {
            const nested = generateData(myObj[currentKey]);
            result.push(...nested);
          }
          return result;
}, []);
 类似资料:
  • 我有一个具有20个属性的对象。 其中有些属性设置为值,有些未定义。当I!如何将未显示键值的设置为?

  • 问题内容: 我有一些JSON数据,但所有键都为大写。如何解析它们并将键转换为更低的键?我正在使用jQuery。 例如: JSON数据: 所需的输出: 问题答案: 这个怎么样: 正则表达式捕获键名$ 1并将其转换为小写。 现场演示:http : //jsfiddle.net/bHz7x/1/ [edit]要解决@FabrícioMatté的评论,另一个仅匹配文字字符的演示: http //jsfid

  • 问题内容: 工具:Reactjs 0.14.0 Vanilla Flux 我需要唯一标识符的原因有两个: 儿童和解 跟踪点击了哪个孩子 因此,假设我有一个看起来像这样的消息列表: 现在,我使用“ Array.prototype.map()” 在所有者组件内部创建“ ownee” 组件() 但是this.props.key在MessageListItem中是未定义的,即使我知道在传递时已定义的事实也

  • 我从一个API获得一个对象,并在它里面用其他API响应创建新的对象,例如: API响应1: API响应2: 当我试图在属性的之后给出时,我无法访问创建的属性,返回。但是,当我为任何对象提供时,所创建的属性就在那里。

  • 我是Hadoop和Java的新手,我觉得我明显缺少了一些东西。如果这意味着什么的话,我正在使用Hadoop 1.0.3。 我使用hadoop的目标是获取一堆文件并一次解析一个文件(而不是逐行)。每个文件将生成多个键值,但其他行的上下文很重要。键和值是多值/复合的,因此我为键实现了可写比较,为值实现了可写。由于每个文件的处理需要一点 CPU,因此我想保存映射器的输出,然后稍后运行多个化简器。 对于复

  • 问题内容: 我以为这是很普通的事情,但是我找不到如何在AngularJS中处理它。假设我有一个事件列表,想用AngularJS输出它们,那很简单: 但是,当列表为空时如何处理?我想要一个消息框,其中的列表带有类似“无事件”或类似内容。唯一接近的是with (如何检查对象而不是数组时是否为空?),但这真的是我唯一的选择吗? 问题答案: 您可以使用ngShow。 参见示例。 或者您可以使用ngHide