2017-10-19 2 views
-1

Ich versuche Klon zuweisen/Merge-Objekts, das Array hat, wo id Streichhölzer oder ein Ende hinzufügen:Merge-Array mit verschachtelten Objekten, wenn id Streichhölzer oder am Ende hinzufügen

newState = Object.assign({}, state, { 
    data: { 
     newest: { 
     result: action.payload.result, 
     list: action.payload.items, 
     request: action.payload.items 
     }, 
     itemList: [ 
     ...state.data.itemList, 
     { 
      id: action.payload.id, 
      list: action.payload.items, 
      request: action.payload.items 
     } 
     ] 
    } 
    }); 

In diesem Fall ...state.data.itemList ist ein Array mit Objekten, wo ich mit ID ein bestehendes Objekt finden und verschachtelte Objekte verschicken möchte. Wenn es jedoch kein Objekt mit diesem ID gibt, möchte ich es zur Liste hinzufügen.

Aktuelle Ansatz fügt es immer zum Ende, was natürlich nicht das ist, was ich will.

Danke.

Antwort

0

Fühlen Sie sich nicht unter Druck gesetzt, den neuen Zustand in einem Arbeitsgang herzustellen. Hier wäre meine Umsetzung. Ich würde mein Array für die aktuelle ID unter Verwendung überprüfen. Hier sind ein paar lustige ES6-Tricks.

const newState = {...state} 
const {result, items, id, items} = action.payload 
const data = {newest: {result, list: items, request: items}} 
const hasId = newState.data.itemList.some(item => item.id === id) 
if (!hasId) { 
    newState.data.itemList.push({id, list: items, request: items}) 
} 
return {...newState, data} 
Verwandte Themen