javascript - 如何在对象数组上使用reduce 渲染jsx <div> 内的字符串

标签 javascript arrays reactjs frontend jsx

我想渲染航类停靠点位置代码列表。我有一个停靠点对象数组:

flight = {
departStops:1,
departSegments:{
 {
    departure: {iataCode: "TXL"},
    arrival: {iataCode: "FRA"}
   },
 {
    departure: {iataCode: "FRA"},
    arrival: {iataCode: "YUL"}
   }
}

在返回之前在我的组件函数中创建了字符串常量:

const myString = flight.departSegments.reduce((acc,item) => {
                        if (item.arrival.iataCode !== flight.departSegments[flight.departSegments.length - 1].arrival.iataCode) {
                            if (acc.length > 0) {
                                acc.concat(',',item.arrival.iataCode)
                            } else {
                                acc.concat(item.arrival.iataCode)
                            }
                        }
                        return acc
                    },"")

这就是我在组件内渲染字符串的方式:

<div>
    {
        flight.departStops > 0 
        ?
        myString
        : 
        null
    }
</div>

问题是 myString 在渲染时仍然是空字符串

最佳答案

字符串在 JavaScript 中是不可变的,为了使其工作,您需要返回 acc.concat() 结果

const flight = {
  departStops: 1,
  departSegments: [
    {
      departure: { iataCode: 'TXL' },
      arrival: { iataCode: 'FRA' }
    },
    {
      departure: { iataCode: 'FRA' },
      arrival: { iataCode: 'YUL' }
    }
  ]
}

const myString = flight.departSegments.reduce((acc, item) => {
  if (
    item.arrival.iataCode !==
    flight.departSegments[flight.departSegments.length - 1].arrival.iataCode
  ) {
    if (acc.length > 0) {
      return acc.concat(',', item.arrival.iataCode)
    } else {
      return acc.concat(item.arrival.iataCode)
    }
  }
  return acc
}, '')

console.log(myString)

附注

您可以简化渲染

<div> { (flight.departStops > 0) && myString } </div> 

关于javascript - 如何在对象数组上使用reduce 渲染jsx <div> 内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60930752/

相关文章:

javascript - Firebase Firestore - 复合查询中包含多个数组

css - 使用 Button React 更改 .scss

javascript - 如何检查负责SSR的google云功能是否运行?

arrays - 将数组数组转换为 Ruby 中的哈希数组

arrays - 为什么我不能检查我的数组数组是否包含特定数组?

javascript - 我如何在 JavaScript 中准备嵌套键值对列表

javascript - React.js 切换显示

javascript - 如何在 firebase 中显示带有值事件的记录列表?

javascript - 用于下一个未聚焦输入的 jQuery 选择器

javascript - 我可以使用 PropTypes 来表示 prop 是 Promise 吗?