Как мне отфильтровать объект, используя lodash? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть любой массив объектов, как показано ниже.и у меня есть имя агента / клиента sid как "agentCallSid", например, CAb56eb286a9431e29c776a989747af817.Я хочу отфильтровать объект, в котором участники содержат agentCallSid.также участники - строка как в массиве ниже.

[{
        conferenceSid: 'CF0339437ea7f4511af474dcaa1d9eb822',
        conference_name: '3534',
        conference_status: 'in-progress',
        user_id: 100112,
        date_time: '2018-12-11T10:39:55.000Z',
        participants: '[{"role": "agent", "username": "aamer", "agentCallSid": "CAb30187cd4350fbaac6509bb333e0058a", "inCallStatus": true, "callStartTime": "2018-12-11T10:38:35.243Z"}, {"role": "client", "username": "shahzad", "inCallStatus": true, "callStartTime": "2018-12-11T10:38:35.243Z", "clientCallSid": "CA12b3797dffa2f8c210e6e6bc5c1560f9"}]'
    },
    {
        conferenceSid: 'CF264305d1571df65562e38014bf968f1a',
        conference_name: '6618',
        conference_status: 'in-progress',
        user_id: 100112,
        date_time: '2018-12-11T10:40:50.000Z',
        participants: '[{"role": "agent", "username": "aamer", "agentCallSid": "CAb56eb286a9431e29c776a989747af817", "inCallStatus": true, "callStartTime": "12/11/2018"}, {"role": "client", "username": "shahzad", "inCallStatus": true, "callStartTime": "12/11/2018", "clientCallSid": "CAca658f5660167fca61d37d6fdd04f5eb"}]'
    },
    {
        conferenceSid: 'CFd3d0e940f0274bd3e8b939d40603e62b',
        conference_name: '893',
        conference_status: 'in-progress',
        user_id: 100116,
        date_time: '2018-12-11T11:50:44.000Z',
        participants: '[{"role": "agent", "callSid": "CA7ee924fe702041ac1be6396e394e59f4", "username": "aamer", "inCallStatus": true, "callStartTime": "2018-12-11T11:49:23.533Z"}, {"role": "client", "callSid": "CA5087bedf915c0f78e684f548d413393c", "username": "zain", "inCallStatus": true, "callStartTime": "2018-12-11T11:49:23.533Z"}]'
    }
]

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете использовать _.filter и _.some для чего-то вроде этого:

const data = [{ conferenceSid: 'CF0339437ea7f4511af474dcaa1d9eb822', conference_name: '3534', conference_status: 'in-progress', user_id: 100112, date_time: '2018-12-11T10:39:55.000Z', participants: '[{"role": "agent", "username": "aamer", "agentCallSid": "CAb30187cd4350fbaac6509bb333e0058a", "inCallStatus": true, "callStartTime": "2018-12-11T10:38:35.243Z"}, {"role": "client", "username": "shahzad", "inCallStatus": true, "callStartTime": "2018-12-11T10:38:35.243Z", "clientCallSid": "CA12b3797dffa2f8c210e6e6bc5c1560f9"}]' }, { conferenceSid: 'CF264305d1571df65562e38014bf968f1a', conference_name: '6618', conference_status: 'in-progress', user_id: 100112, date_time: '2018-12-11T10:40:50.000Z', participants: '[{"role": "agent", "username": "aamer", "agentCallSid": "CAb56eb286a9431e29c776a989747af817", "inCallStatus": true, "callStartTime": "12/11/2018"}, {"role": "client", "username": "shahzad", "inCallStatus": true, "callStartTime": "12/11/2018", "clientCallSid": "CAca658f5660167fca61d37d6fdd04f5eb"}]' }, { conferenceSid: 'CFd3d0e940f0274bd3e8b939d40603e62b', conference_name: '893', conference_status: 'in-progress', user_id: 100116, date_time: '2018-12-11T11:50:44.000Z', participants: '[{"role": "agent", "callSid": "CA7ee924fe702041ac1be6396e394e59f4", "username": "aamer", "inCallStatus": true, "callStartTime": "2018-12-11T11:49:23.533Z"}, {"role": "client", "callSid": "CA5087bedf915c0f78e684f548d413393c", "username": "zain", "inCallStatus": true, "callStartTime": "2018-12-11T11:49:23.533Z"}]' } ] 

const getAgentById = id => _.filter(data, x => {
  let arr = JSON.parse(x.participants)
  return _.some(arr, {agentCallSid: id})
})
console.log(getAgentById('CAb56eb286a9431e29c776a989747af817'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

Вы можете получить тот же результат без lodash с Array.filter и Array.some:

const data = [{ conferenceSid: 'CF0339437ea7f4511af474dcaa1d9eb822', conference_name: '3534', conference_status: 'in-progress', user_id: 100112, date_time: '2018-12-11T10:39:55.000Z', participants: '[{"role": "agent", "username": "aamer", "agentCallSid": "CAb30187cd4350fbaac6509bb333e0058a", "inCallStatus": true, "callStartTime": "2018-12-11T10:38:35.243Z"}, {"role": "client", "username": "shahzad", "inCallStatus": true, "callStartTime": "2018-12-11T10:38:35.243Z", "clientCallSid": "CA12b3797dffa2f8c210e6e6bc5c1560f9"}]' }, { conferenceSid: 'CF264305d1571df65562e38014bf968f1a', conference_name: '6618', conference_status: 'in-progress', user_id: 100112, date_time: '2018-12-11T10:40:50.000Z', participants: '[{"role": "agent", "username": "aamer", "agentCallSid": "CAb56eb286a9431e29c776a989747af817", "inCallStatus": true, "callStartTime": "12/11/2018"}, {"role": "client", "username": "shahzad", "inCallStatus": true, "callStartTime": "12/11/2018", "clientCallSid": "CAca658f5660167fca61d37d6fdd04f5eb"}]' }, { conferenceSid: 'CFd3d0e940f0274bd3e8b939d40603e62b', conference_name: '893', conference_status: 'in-progress', user_id: 100116, date_time: '2018-12-11T11:50:44.000Z', participants: '[{"role": "agent", "callSid": "CA7ee924fe702041ac1be6396e394e59f4", "username": "aamer", "inCallStatus": true, "callStartTime": "2018-12-11T11:49:23.533Z"}, {"role": "client", "callSid": "CA5087bedf915c0f78e684f548d413393c", "username": "zain", "inCallStatus": true, "callStartTime": "2018-12-11T11:49:23.533Z"}]' } ] 

const getAgentById = id => data.filter(x => {
  let arr = JSON.parse(x.participants)
  return arr.some(y => y.agentCallSid === id)
})

console.log(getAgentById("CAb56eb286a9431e29c776a989747af817"))
...