2_Table.jsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { Component } from "react";
  2. import "./2_Table.css"
  3. class Table extends Component{
  4. state = {
  5. date:[
  6. {
  7. score:[70,60,30],
  8. bonus:300,
  9. name:"小明"
  10. },
  11. {
  12. score:[90,160,80],
  13. bonus:500,
  14. name:"小栗"
  15. },
  16. {
  17. score:[60,95,95],
  18. bonus:200,
  19. name:"小红"
  20. },
  21. {
  22. score:[100,100,100],
  23. bonus:400,
  24. name:"小白"
  25. }
  26. ]
  27. };
  28. // 数据根据奖金降序排列
  29. sortDate(){
  30. return this.state.date.sort((a,b)=>b.bonus-a.bonus)
  31. }
  32. // 渲染内容
  33. newTable(){
  34. var newDate = this.sortDate()
  35. return newDate.map((item,index)=>{
  36. return (
  37. <tr key={index}>
  38. <td>{index+1}</td>
  39. <td>{item.name}</td>
  40. {item.score.map((item,index) => <td key={index}>{item}</td>)}
  41. {/* reduce 数据的累加或累减
  42. 第一个参数:总数=>total
  43. 第二个参数:当前元素=>currentValue
  44. */}
  45. <td>{item.score.reduce((c,d)=> c+d)}</td>
  46. <td>{item.bonus}</td>
  47. </tr>
  48. )
  49. })
  50. }
  51. render(){
  52. return (
  53. <div>
  54. <table className="table">
  55. <thead>
  56. <tr>
  57. <th>名次</th>
  58. <th>名字</th>
  59. <th colSpan={3}>分 数</th>
  60. <th>总分</th>
  61. <th>奖金</th>
  62. </tr>
  63. {this.newTable()}
  64. <tr>
  65. <td colSpan={6}>奖金总计</td>
  66. <td>{this.state.date.reduce((x,y)=> x+y.bonus,0)}</td>
  67. </tr>
  68. </thead>
  69. <tbody>
  70. {/* <tr>
  71. <td>第一名</td>
  72. <td>best</td>
  73. <td>98</td>
  74. <td>76</td>
  75. <td>88</td>
  76. <td>262</td>
  77. <td>500</td>
  78. </tr> */}
  79. </tbody>
  80. </table>
  81. </div>
  82. )
  83. }
  84. }
  85. export default Table;