Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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 如何根据react中的类别筛选数组?_Javascript_Reactjs_Ramda.js - Fatal编程技术网

Javascript 如何根据react中的类别筛选数组?

Javascript 如何根据react中的类别筛选数组?,javascript,reactjs,ramda.js,Javascript,Reactjs,Ramda.js,我正在学习React,并试图找出如何根据类别过滤数组 我处理的数据如下所示: 因此,我可以使用以下方法筛选出所有类别: getTheCats() { const cats = [...new Set(this.getVehicleData().map(v => v.category))]; const catsR = cats.filter(c => c).map((category, i) => { // console.log(this.p

我正在学习React,并试图找出如何根据类别过滤数组

我处理的数据如下所示:

因此,我可以使用以下方法筛选出所有类别:

getTheCats() {
    const cats = [...new Set(this.getVehicleData().map(v => v.category))];
    const catsR = cats.filter(c => c).map((category, i) => {
        // console.log(this.props.vehicle);

        return (
            <Col
                xs="12"
                key={i}
                onClick={() => this.getCategories(category)}
                className={
                    this.state.category === category
                        ? 'border-bottom p-15 active'
                        : 'border-bottom p-15 not-active'
                }
            >
                <FontAwesomeIcon
                    icon={this.state.active ? faMinusCircle : faPlusCircle}
                />
                <h5 className=""> {category} </h5>
                <SpecsDetails
                    key={this.props.vehicle.id}
                    vehicle={this.props.vehicle}
                />
            </Col>
        );
    });
    return (
        <Row className="deal-details__specs accoridon-heading" id="specs">
            {catsR}
        </Row>
    );
}
这给了我所有的分类。但我现在需要做的是把这些都放进手风琴里。手风琴的标题实际上是这样的。如何获取与每个类别匹配的所有数据

您可以使用groupBy获取类别对象,每个类别都有一个值数组。然后,可以使用toPairs和map with zipObject将其转换为类别对象数组:

const{pipe,groupBy,prop,toPairs,map,zipObj,dissoc}=R; const groupByCategories=管道 groupByprop“类别”, MapDisSoc'category',//可选-如果要从值中删除类别 托帕尔斯, mapzipObj['category','values'] const data=[{标签:远程行李箱/舱口释放,类别:舒适性和便利性,值:远程控制行李箱/舱口释放},{标签:巡航控制,类别:舒适性和便利性,值:包含},{标签:货区灯,类别:舒适性和便利性,值:包含},{标签:电脑,类别:舒适和方便,值:行车电脑:包括平均燃油经济性和剩余燃油范围},{标签:前照灯控制,类别:舒适和方便,值:带黄昏传感器的前照灯控制},{标签:电源锁,类别:舒适和方便,值:卡钥匙电源锁;自动锁},{标签:通风系统,类别:舒适和方便,值:带微型过滤器的通风系统},{标签:二次通风控制,类别:舒适和方便,值:乘客通风控制},{标签:空调,类别:舒适和方便,值:双区气候控制},{标签:电动车窗,类别:舒适性和便利性,值:两扇一键式前车窗,后窗},{标签:备胎,类别:舒适性和便利性,值:包含},{标签:指南针,类别:舒适性和便利性,值:包含},{标签:智能卡/智能钥匙,类别:舒适性和便利性,值:免钥匙进入n进入™ 智能卡/无钥匙智能钥匙},{标签:车辆启动按钮,类别:舒适和便利,价值:包含},{标签:外部,类别:尺寸,价值:L:189.8,W:76.5-H:69.3},{标签:货物区域尺寸,类别:尺寸,价值:货物区域尺寸:装载地板高度英寸:32.4},{标签:重量,类别:尺寸,价值:6500磅},{标签:发动机,类别:发动机,值:3.6 v6 V},{标签:燃油系统,类别:发动机,值:多点燃油喷射},{标签:燃油类型,类别:发动机,值:无铅}] 常量结果=groupByCategoriesdata console.logresult 您可以使用groupBy获取类别对象,每个类别都有一个值数组。然后,您可以使用toPairs和map with zipObject将其转换为类别对象数组:

const{pipe,groupBy,prop,toPairs,map,zipObj,dissoc}=R; const groupByCategories=管道 groupByprop“类别”, MapDisSoc'category',//可选-如果要从值中删除类别 托帕尔斯, mapzipObj['category','values'] const data=[{标签:远程行李箱/舱口释放,类别:舒适性和便利性,值:远程控制行李箱/舱口释放},{标签:巡航控制,类别:舒适性和便利性,值:包含},{标签:货区灯,类别:舒适性和便利性,值:包含},{标签:电脑,类别:舒适和方便,值:行车电脑:包括平均燃油经济性和剩余燃油范围},{标签:前照灯控制,类别:舒适和方便,值:带黄昏传感器的前照灯控制},{标签:电源锁,类别:舒适和方便,值:卡钥匙电源锁;自动锁},{标签:通风系统,类别:舒适和方便,值:带微型过滤器的通风系统},{标签:二次通风控制,类别:舒适和方便,值:乘客通风控制},{标签:空调,类别:舒适和方便,值:双区气候控制},{标签:电动车窗,类别:舒适性和便利性,值:两扇一键式前车窗,后窗},{标签:备胎,类别:舒适性和便利性,值:包含},{标签:指南针,类别:舒适性和便利性,值:包含},{标签:智能卡/智能钥匙,类别:舒适性和便利性,值:免钥匙进入n进入™ 智能卡/无钥匙智能钥匙},{标签:车辆启动按钮,类别:舒适和便利,价值:包含},{标签:外部,类别:尺寸,价值:L:189.8,W:76.5-H:69.3},{标签:货物区域尺寸,类别:尺寸,价值:货物区域尺寸:装载地板高度英寸:32.4},{标签:重量,类别:尺寸,价值:6500磅},{标签:发动机,类别:发动机,值:3.6 v6 V},{标签:燃油系统,类别:发动机,值:多点燃油喷射},{标签:燃油类型,类别:发动机,值:无铅}] 常量结果=groupByCategoriesdat A. console.logresult
实际上,您可以通过一些对象技巧来实现这一点

let categories = {};
this.getVehicleData().map(vehicle => { 
  categories[vehicle.category] = categories[vehicle.category] || []
  categories[vehicle.category].push(vehicle)
})
您可以通过以下方式访问这些值:

Object.keys(categories).map(category => {
  console.log('category', category)
  console.log('values', categories[category])
})

希望这能起作用:

您可以通过一些对象技巧来实现这一点

let categories = {};
this.getVehicleData().map(vehicle => { 
  categories[vehicle.category] = categories[vehicle.category] || []
  categories[vehicle.category].push(vehicle)
})
您可以通过以下方式访问这些值:

Object.keys(categories).map(category => {
  console.log('category', category)
  console.log('values', categories[category])
})

希望这能奏效:

代码示例看起来被截断了;现在还不清楚如何计算catsR。如果您感兴趣,这里有一个替代使用Set计算唯一类别列表的方法:const categories=composeuniq,mapprop'category'。很抱歉。是的,它被截断了。catsR只返回我的组件的其余部分,然后我渲染它。我已经用剩下的代码更新了这个问题;现在还不清楚如何计算catsR。如果您感兴趣,这里有一个替代使用Set计算唯一类别列表的方法:const categories=composeuniq,mapprop'category'。很抱歉。是的,它被截断了。catsR只返回我的组件的其余部分,然后我渲染它。我已经用剩下的代码更新了这个问题。@ScottSauyet-谢谢。我考虑过,但由于数据是在React中用于渲染的,所以我不确定它是否那么重要。我会把它作为一种选择。新年快乐:我倾向于在任何地方都这样做,即使这不是真的必要,以使我使用的结构更容易理解。但这里绝对有理由不这样做。欢迎。我喜欢这个,而且我相信@ScottSauyet知道更多的资源。克里斯托弗·奥克拉维在他的Youtube频道上广泛谈论拉姆达函数:->他一个接一个地讨论函数。我真的很喜欢兰迪·库尔曼的系列。@ScottSauyet-谢谢。我考虑过,但由于数据是在React中用于渲染的,所以我不确定它是否那么重要。我会把它作为一种选择。新年快乐:我倾向于在任何地方都这样做,即使这不是真的必要,以使我使用的结构更容易理解。但这里绝对有理由不这样做。欢迎。我喜欢这个,我相信@ScottSauyet知道更多的资源。克里斯托弗·奥克拉维在他的Youtube频道上广泛谈论拉姆达函数:->他一个接一个地讨论函数。我真的很喜欢兰迪·库尔曼的系列。