Реагировать на поиск и получение элементов в массиве объектов - PullRequest
0 голосов
/ 29 марта 2020

В моем проекте у меня есть объект состояния с именем products.

{
    "productName": "flute",
    "batches": [{
        "_id": {...},
        "batchNo": "flu1",
        "expDate": "10/2020",

    }, {
        "_id": {...},
        "batchNo": "flu2",
        "expDate": "11/2020",

    }],

}


mon goose Схема этого

productName:{
        type:String
    },
    batches:[{    
            batchNo:{
                type:String
            },
            expDate:{
                type:String
            },
}]


внутри массива пакетов я хочу получать данные только из указанного c идентификатора партии (this.props.batchID)
Я попробовал приведенный ниже код, но он не работал. как мне подойти к ней ????

    getBatchdetails(){
         this.state.products.batches.map(function(object,i){
            console.log(object.batchNo);
            if(object._id==this.props.obj.batchID){
                console.log(object.batchNo);

                return object.batchNo;
            }
        });
    }
    render() {
        return (
            <tr>
                <td>
                    {this.state.products.productName}
                </td>
                <td>
                   {this.getBatchdetails}
                </td>
            </tr>
        )
    }

1 Ответ

0 голосов
/ 29 марта 2020

Вы можете использовать .find() для этой цели. Я выдумал batchID, но вы можете изменить свое значение.

Попробуйте следующее:

const batchID = 'id002';
const products = {
    "productName": "flute",
    "batches": [{
        "_id": 'id001',
        "batchNo": "flu1",
        "expDate": "10/2020",

    }, {
        "_id": 'id002',
        "batchNo": "flu2",
        "expDate": "11/2020",

    }],

};

const result = products.batches.find(e => e._id === batchID);

console.log(result);
console.log(result.batchNo); // or you can return a specific property

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...