Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 过滤方法在另一种方法上?_Javascript_Json_Reactjs_Filter - Fatal编程技术网

Javascript 过滤方法在另一种方法上?

Javascript 过滤方法在另一种方法上?,javascript,json,reactjs,filter,Javascript,Json,Reactjs,Filter,我想在下面定义的可渲染方法上运行一个过滤器方法。是否有可能做到: renderTable().filter(x=>x.name) 现在,我有一个表,其中包含每个类别的行以及它们从提供一些json数据的url得到的结果 我想做一个功能,允许用户调整设置以返回他们想要的结果 代码 const renderTable = () => { return players.map(player => { return ( <tr> <td>{pl

我想在下面定义的可渲染方法上运行一个过滤器方法。是否有可能做到:

renderTable().filter(x=>x.name)

现在,我有一个表,其中包含每个类别的行以及它们从提供一些json数据的url得到的结果

我想做一个功能,允许用户调整设置以返回他们想要的结果

代码

const renderTable = () => {
 return players.map(player => {
  return (
    <tr>
      <td>{player.name}</td>
      <td>{player.age}</td>
      <td>{player.gender}</td>
      <td>{player.state}</td>
      <td>{player.status}</td>
    </tr>
   )
 })
}

return (
 <div className = "App">
  <h1>Players</h1>
   <table id = "players">
    <thead>
     <tr>
       <th>Name</th>
       <th>Age</th>
       <th>Gender</th>
       <th>State</th>
       <th>Status</th>
     </tr>
    </thead>
   <tbody>{renderTable()}</tbody>
  </table>
 </div>
);
const renderable=()=>{
返回玩家。地图(玩家=>{
返回(
{player.name}
{player.age}
{玩家性别}
{player.state}
{player.status}
)
})
}
返回(
球员
名称
年龄
性别
陈述
地位
{renderable()}
);

是的,你可以。只需在地图
玩家之前进行筛选。筛选(…).map
。但这更好

const renderTable = () => {
  const rows = []
  players.forEach((player, index) => {
    if(player.name) {
      rows.push(
        <tr key={index}>
          <td>{player.name}</td>
          <td>{player.age}</td>
          <td>{player.gender}</td>
          <td>{player.state}</td>
          <td>{player.status}</td>
        </tr>
     )
    }
  })

  return rows;
}
const renderable=()=>{
常量行=[]
players.forEach((player,index)=>{
if(player.name){
推(
{player.name}
{player.age}
{玩家性别}
{player.state}
{player.status}
)
}
})
返回行;
}

您可以在映射之前应用过滤器。在这里,尝试一下:

const renderTable = () => {
  return players
    .filter(player => player.state === "NSW")
    .map(player => {
      return (
        <tr>
          <td>{player.name}</td>
          <td>{player.age}</td>
          <td>{player.gender}</td>
          <td>{player.state}</td>
          <td>{player.status}</td>
        </tr>
      );
    });
};
const renderable=()=>{
返回球员
.filter(player=>player.state==“NSW”)
.map(播放器=>{
返回(
{player.name}
{player.age}
{玩家性别}
{player.state}
{player.status}
);
});
};

这是给你的裁判的一封信


如果您的
renderable
方法返回一个数组,则为。但我很确定它会返回
jsx
。因此,在这种情况下,您应该在
renderTable
方法内部应用过滤器。@SiddAjmera所以它应该是
})。过滤器…
在renderTable方法内部?是的,我的意思是
enderTable
方法将返回一些
行。该行将填充一些可能来自数组的数据。您可以在将该数组映射到
tr
sapreciate之前对该数组应用过滤器,但这不会以任何方式改变我以前编写的代码表。我也在寻找不仅仅是名字,而是一种让用户能够调整他们想要返回的内容的方法。我想你只要将条件
if(player.name)
更改为你想要的任何内容