【问题标题】:How to slice a string in a nested element inside of an array with Javascript?如何使用Javascript在数组内的嵌套元素中对字符串进行切片?
【发布时间】:2020-06-02 22:46:52
【问题描述】:

我需要对嵌套在使用 JS 格式化为数组的 JSON 文件中的字符串元素进行切片。

"fields": {
            "title": "Jameson Library 12th Floor",
            "slug": "Jameson-12th-floor",
            "shortDescription": "[All Jameson Library Floors](/jameson-floor-maps \"All Jameson Library Floors\")",
            "building": {

filteredFloors 数组作为数据传入组件并映射到表格。

{data.map(item => (
          <tr key={item.sys.id}>
            {columns.map(column =>
              <td role='cell' key={this.createKey(item, column)}>{this.renderCell(item, column)}</td>)

我试图返回一个省略标题前 17 个空格的数组,所以剩下的就是楼层(即“12 楼”)。有什么想法吗?

【问题讨论】:

  • 没有 JSON 数组这样的东西,因为 JSON 是一种文本格式。评估为 JavaScript,您的代码中没有数组。
  • JSON 文件被格式化为一个数组。您在上面看到的只是一个 sn-p,我正在尝试为每个具有“title”值的元素修改
  • 如果有其他标题通过关注 18 在您想要的楼层编号前添加其他标题,您可能会遇到麻烦。是否每个title 都保证以“詹姆森图书馆”开头?
  • 每个标题都以“詹姆逊图书馆”开头
  • 将您的 JSON 转换为对象 var obj = JSON.parse(yourJson)。然后使用 obj.fields.title 访问您的标题。然后你可以对标题字符串进行切片。

标签: javascript arrays json nested slice


【解决方案1】:

一旦您能够提取title 数据,您就可以使用slice 来对付它。

// this will slice the first 16 characters and return "12th Floor"
// remember whitespace is counted, not just characters
"Jameson Library 12th Floor".slice(16);

【讨论】:

  • 将其转换为 obj 会破坏它作为数组的完整性吗?我真正想做的是过滤一个数组。 API通过数组发送数据,这是我需要的,但我需要从标题中过滤掉名称。
  • 为了更好地回答这个问题,您目前是如何访问 JSON 中的数据的?一旦获得了这些数据,您将如何处理?
  • 数据来自无头 CMS(内容丰富)。它被加载到一个 React 网站并设置为一个名为 filtersFloors 的数组。我想根据对标题的修改过滤过滤的楼层。最终结果会将数组映射到表格。
  • 按表我假设你的意思是一个 html 表?您打算如何将此数组写入表中?这是重要的部分,因为您可以在此转换过滤后的Floors 数组中的数据; titleslug 等,随你喜欢。您首先需要能够获取这些数据才能使用它们。
  • 我已经将数组映射到 HTML 表,它工作正常。它使用这个filteredFloors 数组作为输入,我使用lodash 来获取项目。我想将用作输入的数组替换为具有修改后的 title 属性的新数组。数组中有 13 个对象都具有相同的属性。我需要做的就是修剪fields.title前面的前17个字符。我是新手,所以感谢您的耐心等待。
猜你喜欢
  • 1970-01-01
  • 2018-09-14
  • 2014-11-15
  • 2020-12-10
  • 2021-03-12
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
相关资源
最近更新 更多