Reactjs 排序日期引发异常类型错误:data.createdAt.sort不是函数

Reactjs 排序日期引发异常类型错误:data.createdAt.sort不是函数,reactjs,react-hooks,Reactjs,React Hooks,排序日期引发异常类型错误:data.createdAt.sort不是函数。我想在react应用程序中首先对最新记录进行排序和显示 { displayWinner.map(data => ( <div key={data.id}className="oldwinner">

排序日期引发异常
类型错误:data.createdAt.sort不是函数
。我想在react应用程序中首先对最新记录进行排序和显示

{
                                displayWinner.map(data => (
                                <div key={data.id}className="oldwinner">
                                    <div className="winnerIcon">
                                        <img src="/images/trophy1.png"></img>
                                        <span key={data.winner} className="winner name">{data.winner}</span>
                                        <span key={data.createdAt} className="winner date">{moment(data.createdAt.sort((a, b) => b - a)).format('DD-MMM-YYYY')}</span>
                                    </div>
                                </div>
                                ))
                            }
{
displayWinner.map(数据=>(
{data.winner}
{矩(data.createdAt.sort((a,b)=>b-a)).format('DD-MMM-YYYY')}
))
}


应在映射值之前进行排序

{
  displayWinner.sort((a, b) => moment(b.createdAt).format('DD-MMM-YYYY') - moment(a.createdAt).format('DD-MMM-YYYY')).map(data => (
                                    <div key={data.id}className="oldwinner">
                                        <div className="winnerIcon">
                                            <img src="/images/trophy1.png"></img>
                                            <span key={data.winner} className="winner name">{data.winner}</span>
                                            <span key={data.createdAt} className="winner date">{moment(data.createdAt).format('DD-MMM-YYYY')}</span>
                                        </div>
                                    </div>
                                    ))
                                }
{
displayWinner.sort((a,b)=>moment(b.createdAt).format('DD-MMM-YYYY')-moment(a.createdAt.format('DD-MMM-YYYY')).map(数据=>(
{data.winner}
{矩(data.createdAt).format('DD-MMM-YYYY')}
))
}

至少有两种情况下您可以获得此
类型错误:x.sort不是一个函数
。当您试图调用
string
Object
上的
sort
时。在您的情况下,首先需要对值进行排序,然后映射

{
displayWinner.sort((a,b)=>b-a).map(数据=>(
{data.winner}
{矩(data.createdAt.format('DD-MMM-YYYY'))
))
}
您需要对数据进行排序,然后将其映射,
排序((a,b)=>moment(b.createdAt)-moment(a.createdAt))
获取每个元素,并将
createdAt
属性转换为momentjs-DateTime对象进行数值比较

{displayWinner
  .sort((a, b) => moment(b.createdAt) - moment(a.createdAt))
  .map((data,) => (
    <div key={data.createdAt} className="oldwinner">
      <div className="winnerIcon">
        <img key="data" src="/images/trophy1.png"></img>
        <span key={data.winner} className="winner name">
          {data.winner}
        </span>
        <span key={data.createdAt} className="winner date">
          {moment(data.createdAt).format("DD-MMM-YYYY")}
        </span>
      </div>
    </div>
  ))}
{displayWinner
.sort((a,b)=>力矩(b.createdAt)-力矩(a.createdAt))
.map((数据,)=>(
{data.winner}
{矩(data.createdAt).format(“DD-MMM-YYYY”)}
))}


数据。createdAt
是一个可排序的数组?你能分享一下你映射的
displayWinner
值是什么,并描述一下你想做什么吗?据我所知,你似乎在尝试对单个日期字符串进行排序。我已经添加了在该部分进行迭代的数据,对吧,所以
data.createdAt
是一个日期时间字符串,没有可以调用的
.sort
。是否要通过此
createdAt
元素属性对
displayWinner
数组进行排序?displayWinner具有上一个winner部分下显示的表中的所有记录的列表。我想在topYes上显示最新记录要按此createdAt元素属性对displayWinner数组进行排序,请注意,这不起作用,