0

I'd like to know how to change deep copy objects with the currying function.

So I tried many ways to change it and did a question before

However, I couldn't figure it out

this is what I have been trying :

import React from "react";
export default function Test() {
  

  let dataSet = [
    {
      labels: "One",
      datasets: [
        {
          label: "1-1",
          data: "defaultDatas",
          backgroundColor: "defaultBackgroundColor",
        },
        {
          label: "1-2",
          data: "defaultDatas",
          backgroundColor: "defaultBackgroundColor",
        },
        {
          label: "1-3",
          data: "defaultDatas",
          backgroundColor: "defaultBackgroundColor",
        },
      ],
    },
    {
      labels: "Two",
      datasets: [
        {
          label: "2-1",
          data: "TwodefaultDatas",
          backgroundColor: "TwodefaultBackgroundColor",
        },
        {
          label: "2-2",
          data: "defaultDatas",
          backgroundColor: "defaultBackgroundColor",
        },
        {
          label: "2-3",
          data: "defaultDatas",
          backgroundColor: "defaultBackgroundColor",
        },
      ],
    },
    {
      labels: "Three",
      datasets: [
        {
          label: "3-1",
          data: "ThreedefaultDatas",
          backgroundColor: "ThreedefaultBackgroundColor",
        },
        {
          label: "3-2",
          data: "defaultDatas",
          backgroundColor: "defaultBackgroundColor",
        },
        {
          label: "3-3",
          data: "defaultDatas",
          backgroundColor: "defaultBackgroundColor",
        },
      ],
    },
  ];

  const changeSecondLabel = (index) => (inx) => (value) => {
    dataSet = dataSet.map((data, i) =>
      i === index
        ? {
            ...data,
            datasets: data.datasets.map((set) => {
              return { ...set, label: value };
            }),
          }
        : data
    );
  };
  
changeSecondLabel(0)(1)("value");
  return (
    <div>
      <h1>{JSON.stringify(dataSet[0].datasets[0].label)}</h1>
      <h1>{JSON.stringify(dataSet[0].datasets[1].label)}</h1>
      <h1>{JSON.stringify(dataSet[0].datasets[2].label)}</h1>
      <br />
      <h1>{JSON.stringify(dataSet[1].datasets[0].label)}</h1>
      <h1>{JSON.stringify(dataSet[1].datasets[1].label)}</h1>
      <h1>{JSON.stringify(dataSet[1].datasets[2].label)}</h1>
      <br />
      <h1>{JSON.stringify(dataSet[2].datasets[0].label)}</h1>
      <h1>{JSON.stringify(dataSet[2].datasets[1].label)}</h1>
      <h1>{JSON.stringify(dataSet[2].datasets[2].label)}</h1>
    </div>
  );
}

I want to change each label with a currying function like this :

              dataSet[0].datasets[0].label =value 
              dataSet[0].datasets[1].label =value      
              
              dataSet[1].datasets[0].label =value
              dataSet[1].datasets[1].label = value
              
             dataSet[2].datasets[1].label = value
              dataSet[2].datasets[2].label =value
              
              with index : 
                dataSet[index].datasets[idx].label =value 
                dataSet[index].datasets[idx].label =value      
              
                 with currying : 
                 curryingfunction(index)(idx)(value) ;

But I don't know how to use spread operator with it

and I want to know the easy way to understand deep copy.

Thank you in advance!

Somi
  • 141
  • 6

0 Answers0