javascript - 数组已排序,但 React 未按排序顺序渲染

标签 javascript arrays reactjs sorting

我有以下代码..

{
     this.state.rows.map((qc) =>
         qc.BinsByDayByOrchardsQCs.map((qc2) =>
             qc2.BinsByDayByOrchardsQCsDefects.map((qc3) => 
                !defectsArray.includes(qc3.Defect) && defectsArray.sort() && defectsArray.push(qc3.Defect) &&
                  (<div className="row label">
                        <div className="column-label bold">{qc3.Defect}</div>
                    </div>)
           )
         )
      )
   }

当我使用console.log("DefectsArray",defectsArray)

我的数组已在控制台中打印并排序(我想要的顺序)

0: "Bruise"
1: "Hail damage"
2: "Sunburn"
3: "Scuff"

然而,react 实际上渲染的是“晒伤、瘀伤、冰雹损坏、磨损”——基本上是无序的

如何实现在 console.log 中打印的输出?

编辑:对象内部..

`Array(20)
0:
BinsByDayByOrchardsAreas: null
BinsByDayByOrchardsCountries: null
BinsByDayByOrchardsPickers: null
BinsByDayByOrchardsQCs: Array(1)
0:
BinsByDayByOrchards: null
BinsByDayByOrchardsID: null
BinsByDayByOrchardsQCsDefects: Array(4)
0: {BinsByDayByOrchardsQCsID: "-LbiHz7tuuJH71I_4IKw", Defect: "Sunburn", Count: 1, BinsByDayByOrchardsQCs: null}
1: {BinsByDayByOrchardsQCsID: "-LbiHz7tuuJH71I_4IKw", Defect: "Bruise", Count: 2, BinsByDayByOrchardsQCs: null}
2: {BinsByDayByOrchardsQCsID: "-LbiHz7tuuJH71I_4IKw", Defect: "Hail damage", Count: 0, BinsByDayByOrchardsQCs: null}
3: {BinsByDayByOrchardsQCsID: "-LbiHz7tuuJH71I_4IKw", Defect: "Scuff", Count: 2, BinsByDayByOrchardsQCs: null}

`

最佳答案

这是一个简单的工作示例,供您作为代码片段引用!

function App(){
  return(
    [ "Hail damage", "Sunburn","Bruise","Scuff"].sort().map((s)=><div>{s}</div>)
  );
}

ReactDOM.render(
  <App />,
  document.body
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

但是你的代码有如此多的缺陷,它根本没有意义。 对于初学者来说,您正在对缺陷数组进行排序,但您正在显示(渲染)qc3 数组中的值!

将生成用于显示的字符串的函数移至另一个函数中。我已经修复了其余的实现,使其更具可读性!

getDisplayValues() {
    let displayedDefects = [];
    this.state.rows.map((qc) =>
        qc.BinsByDayByOrchardsQCs.map((qc2) =>
            qc2.BinsByDayByOrchardsQCsDefects.map((qc3) =>
                if(defectsArray.includes(qc3.Defect)){
                    displayedDefects.push(qc3.Defect);
                }
            )
        )
    );

    displayedDefects.sort();

    return displayedDefects.map((defect)=>( 
      <div className = "row label" >
          <div className = "column-label bold" > {defect} </div>
      </div> );

}

render(){
    return {this.getDisplayValues()}               
}

关于javascript - 数组已排序,但 React 未按排序顺序渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55895172/

相关文章:

javascript - 不知道为什么我的循环函数在这里不起作用

javascript - 是否可以引用 JS 数组/对象中的另一个元素

javascript - jQuery 从值字符串匹配

javascript - 使用 VueJS 将选择选项值传递到输入字段

javascript - 试图弄清楚为什么代码不会呈现列表

javascript - 数组排序在 JavaScript 中无法正常工作

java - 从数字中提取单个数字。

arrays - Postgres数组比较困惑

javascript - 如何在 react 中的 map 函数中将对象作为 Prop 传递

reactjs - 如何使用函数组件向 ref 公开函数?