gpt4 book ai didi

javascript - 如何使用 .filter() 从数组中删除值?

转载 作者:行者123 更新时间:2023-12-02 22:38:12 26 4
gpt4 key购买 nike

我正在为一款游戏制作排行榜。我正在使用的 userInfo 数组包含从 json 表获取的数据。该数组包含 id , username , bestattemptsbesttime以及每个类别的数据。

该表当前有 4 列,并且 json 表中的所有数据都位于表行中。我需要让表格不显示具有 bestattemps < 5 的用户的数据或besttime === 0 。我正在尝试从数组中过滤数据,但它不起作用,并且收到此错误:TypeError: Cannot convert undefined or null to object就这条线const keys = Object.keys(newArray[0])

代码如下:

import React from "react";
import "./LeaderBoard.css";


const Head = ({keys, head}) => {
return (
<thead>
<tr>
{
keys.map(key =><th key={key}>{head[key] || key}</th> )
}
</tr>
</thead>

)
}
const Row = ({row}) => {
const keys = Object.keys(row)

return (

<tr key={row.Rank}>
{
keys.map(key => <td key={key}>{row[key]}</td>)

}

</tr> )
}
const LeaderBoard = ({usersInfo, head}) => {

usersInfo.sort(function sortByAttempts(a, b) {
if(a.bestattempts !== b.bestattempts){
return a.bestattempts - b.bestattempts
}else{
return a.besttime - b.besttime
}

});

const newArray = usersInfo.map(({ id, ...rest }, index) => ({ Rank: index + 1, ...rest }) )

const keys = Object.keys(newArray[0])

const filteredData = newArray.filter(usersInfo => usersInfo.bestattempts >= 5 && usersInfo.besttime !== 0);



return (
<div className="Leaderboard-wrapper">
<table>
<Head keys={keys} head={head}/>
<tbody>
{
filteredData.map((row) => <Row row={row}/>)
}
</tbody>
</table></div>
)
};

export default LeaderBoard;

在 app.js 上作为 prop

 const head = {
id: "ID",
username: "Username",
bestattempts: "Best Attempts",
besttime: "Best Time",
}

最佳答案

您可能想要对 header 进行硬编码。不要依赖过滤器中的数据,这可能会导致空数组并因此引发 array[0] 抛出,而是考虑对 header 进行硬编码。小改动,例如 const keys = ['Rank', 'username', 'bestattempts', 'besttime']。

此外,最终您将希望 header 值不依赖于描述对象的键。我还建议更改 Row 的实现,而不是在所有键中执行循环,而是决定要返回它们的顺序。类似的东西

<td>{row['Rank']}</td>
<td>{row['username']}</td>
<td>{row['bestattempts']}</td>
<td>{row['besttime']}</td>

这样您就可以完全控制值的顺序。

关于javascript - 如何使用 .filter() 从数组中删除值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58674663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com