Tengo dos matrices de objetos que quiero fusionar en una sola matriz y fusionar sus objetos también.
Las dos matrices:
const itemsFr = [ { title: "Bonjour" }, { title: "Bonne Nuit" } ]; const itemsEn = [ { title: "Good Morning" }, { title: "Good Night" } ];El resultado que quiero:
items = [ { title: { fr: "Bonjour", en: "Good Morning" } }, { title: { fr: "Bonne Nuit", en: "Good Night" } } ];Esto es lo que probé:
export default function App() { const [items, setItems] = useState([]); const itemsFr = [ { title: "Bonjour" }, { title: "Bonne Nuit" } ]; const itemsEn = [ { title: "Good Morning" }, { title: "Good Night" } ]; const fillItemsFrArray = () => itemsFr.map((item) => { setItems(...items, { title: { fr: item.title } }); }); const fillItemsEnArray = () => itemsEn.map((item) => { setItems(...items, { title: { en: item.title } }); }); useEffect(() => { fillItemsFrArray(); fillItemsEnArray(); }, []); return ( <div className="App"> <h2>{JSON.stringify(items, null, 4)}</h2> </div> ); }Aquí está el enlace de CodeSandbox: https://codesandbox.io/s/restless-night-xq6qg?file=/src/App.js:670-1166
esto funcionara?
const itemsFr = [ { title: "Bonjour" }, { title: "Bonne Nuit" }, { title: "bla bla" } ]; const itemsEn = [ { title: "Good Morning" }, { title: "Good Night" } ]; const items = itemsFr.map((i,c) => ({fr:i.title, en:itemsEn[c]?.title})); console.log(items)Puede adoptar un enfoque dinámico utilizando un objeto con las claves deseadas para el resultado final.
const itemsFr = [{ title: "Bonjour" }, { title: "Bonne Nuit" }], itemsEn = [{ title: "Good Morning" }, { title: "Good Night" }], result = Object .entries({ fr: itemsFr, en: itemsEn }) .reduce((r, [key, a]) => a.map(({ title }, i) => ({ title: { ...r[i]?.title, [key]: title } })), []); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }