Как я правильно понимаю, КАЖДЫЙ ПУНКТ вашего массива topSearches - это ОБЪЕКТ - карта, где ключом является searchTerm
, а значением является count
. Я не понимаю, что у вас в массиве, так как вы проверяете только первый элемент массива (topsearches[0]
), но хорошо, попробуйте это:
case 'UPDATE_TOP_SEARCH':
return {
...state,
topSearches: [
// update first item of array
{
// copy the previous state of map
...state.topSearches[0],
// update item of map -
// if searchterm was already there increase the count, otherwise add value 1
[action.searchterm]: (
action.searchterm in state.topSearches[0] ?
state.topSearches[0][action.searchterm] + 1 :
1
)
},
// just put shallow copy of all other items
...state.topSearches.slice(1)
]
}