首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从react-bootstrap-typeahead中的嵌套对象中过滤?

如何从react-bootstrap-typeahead中的嵌套对象中过滤?
EN

Stack Overflow用户
提问于 2020-07-14 21:29:54
回答 1查看 216关注 0票数 0

我正在使用react-bootstrap-typeahead在react中搜索。我面临着过滤嵌套对象的问题。

代码语言:javascript
复制
const products = [
    {
        id : 1,
        name : "abc",
        applications:[
            {
                name:"ink",
                fullname:"INKK"
            },
            {
                name:"solvent",
                fullname:"ssINKK"
            }
        ]
    },
    {
        id:2,
        name:"xyz",
        applications:[
            {
                name:"ink22",
                fullname:"INKK"
            },
            {
                name:"solvent22",
                fullname:"ssINKK"
            }
        ]
    }
]

我想按应用程序名称进行搜索。例如,如果搜索ink22,那么它应该返回id为2的object,下面是我的code.Any,帮助将是useful.Thanks。

代码语言:javascript
复制
import React  from "react";
import Typeahead from "react-bootstrap-typeahead/lib/components/Typeahead";

export default function Search(props){
    const { products } = props

    return (
        <Typeahead
            id="search-product"
            labelKey={option => `${option.name}`}
            minLength={1}
            filterBy={(option, props) => {
                console.log(props)
            }}
            options={products ? products : []}
            placeholder="Search"
            renderMenuItemChildren={(option, props) => (
                <div className="card-body">
                    <img src="/images/default.svg" className="float-left mt-2"/>
                        <div className="message ml-5">
                            <h5 className="card-title">{`${option.ci.name} ${option.name}`} </h5>
                            <h6 className="card-subtitle text-muted">{`${option.brand.name} ${option.range}`}</h6>
                        </div>
                </div>
            )}
        />
    );
};
EN

回答 1

Stack Overflow用户

发布于 2020-07-14 22:17:58

lodash是个好朋友。

代码语言:javascript
复制
const products = [
{
    id : 1,
    name : "abc",
    applications:[
        {
            name:"ink",
            fullname:"INKK"
        },
        {
            name:"solvent",
            fullname:"ssINKK"
        }
    ]
},
{
    id:2,
    name:"xyz",
    applications:[
        {
            name:"ink22",
            fullname:"INKK"
        },
        {
            name:"solvent22",
            fullname:"ssINKK"
        }
    ]
}];

const match = _.find(products, { applications: [{ name: 'ink22' }]});
console.log(match);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.19/lodash.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62896371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档