Dado un gancho de reacción y un objeto con propiedades de matriz, quiero encontrar una manera de actualizar el gancho usando el operador de propagación en un índice de propiedades específico. Aquí hay un ejemplo en el que quiero tomar el índice 0 de la matriz en cada propiedad y distribuirlo
const [{ a, b, c }, setState] = useState({ a : 'x', b : 'x', c : 'y' }) const temp = { a : ['x1', 'y1'], b : ['x2', 'y2'], c : ['x3', 'y3'] } setState({...temp[0]}) /* Expected to be spread onto * setState({ * a : 'x1', * b : 'x2', * c : 'x3' * }) */¿Cómo lograría esto? ¿Estoy buscando en el lugar equivocado para empezar usando el operador de propagación?
.filter() pero no pude hacerlo funcionar[0] y otras sintaxis, pero tampoco tuve éxito.Puede mapear sobre Object.entries y luego convertir el resultado en un objeto con Object.fromEntries .
const temp = { a : ['x1', 'y1'], b : ['x2', 'y2'], c : ['x3', 'y3'] } let res = Object.fromEntries(Object.entries(temp).map(([k,[v]])=>[k, v])); console.log(res);Puedes probar así:
const temp = { a : ['x1', 'y1'], b : ['x2', 'y2'], c : ['x3', 'y3'] }; let obj = {}; Object.keys(temp).forEach(k=> obj[k] = temp[k][0]); console.log(obj);No sé cómo usar el operador de propagación para hacer lo que quieras, pero puedes lograrlo con reduce , algo así como
const temp = { a : ['x1', 'y1'], b : ['x2', 'y2'], c : ['x3', 'y3'] }; const indexToGrab = 0; const newState = Object.entries(temp).reduce((acc, currentEntry) => { acc[currentEntry[0]] = currentEntry[1][indexToGrab]; return acc; }, {}); //{a: 'x1', b: 'x2', c: 'x3'} setState(newState);