0

Here is the array of array's

      let A = {
        "profileId": "12345",
        "data": [{
                "profileId": "12345",
                "campaignId": "39641",
                "portfolioData": {
                    "portfolioData": [{
                        "asin": "B08FSSHG17ZH",
                        "sku": ["130511"]
                    }, {
                        "asin": "B0OH8FHF74TB",
                        "sku": ["130512"]
                    }, {
                        "asin": "B0ZP8FHBWP89",
                        "sku": ["130513"]
                    }]
                }
            },
            {
                "profileId": "12345",
                "campaignId": "35551",
                "portfolioData": {
                    "portfolioData": [{
                        "asin": "B08FSSHG17ZH",
                        "sku": ["130511"]
                    }, {
                        "asin": "B0OH8FHF74TB",
                        "sku": ["130512"]
                    }, {
                        "asin": "B0ZP8FHBWP89",
                        "sku": ["130513"]
                    }]
                }
            }
    
        ]
    }

    let B = [{
        asin: 'B08FSSHG17ZH',
        sku: '130523221'
    },
    {
        asin: 'B0OH8FHF74TB',
        sku: '132122182'
    }
]

So i want to take array B and search the value with the help of asin in array A and update the sku in array. So the expected output i am looking for is:-

{
    "profileId": "12345",
    "data": [{
            "profileId": "12345",
            "campaignId": "39641",
            "portfolioData": {
                "portfolioData": [{
                    "asin": "B08FSSHG17ZH",
                    "sku": ["130511", "130523221"]
                }, {
                    "asin": "B0OH8FHF74TB",
                    "sku": ["130512", "132122182"]
                }, {
                    "asin": "B0ZP8FHBWP89",
                    "sku": ["130513"]
                }]
            }
        },
        {
            "profileId": "12345",
            "campaignId": "35551",
            "portfolioData": {
                "portfolioData": [{
                    "asin": "B08FSSHG17ZH",
                    "sku": ["130511", "130523221"]
                }, {
                    "asin": "B0OH8FHF74TB",
                    "sku": ["130512", "132122182"]
                }, {
                    "asin": "B0ZP8FHBWP89",
                    "sku": ["130513"]
                }]
            }
        }

    ]
}

I am trying to push new value in the sku array which is inside of array of array. So i am trying to update with the function like:-

 function update(columns, responseData) {
          const helper = new Map();
          for (const item of responseData) helper.set(item.asin, item);

          for (const item of columns) {
            const s = helper.get(item.asin);
            item.sku.push(item.sku);
          }
        }

update(A, B);

I know this function wont execute as it is array of array of objects. Where as the function i have written is for array of objects.

1 Answer 1

1

This is not optimised,
and also I would suggest to remove one portfolioData,
and let the portfolioData be an object with keys equal to your current asin,
but anyway - here's the working solution:

update = (mainArray, values) => {
  return {...mainArray, data: mainArray.data.map(item => {
    data = {...item.portfolioData.portfolioData}
    return {
      ...item,
      portfolioData: {
        portfolioData: values.reduce((prev, curr) => {
          elWithAsin = data.find(el => el.asin === curr.asin);
          if (elWithAsin) {
            elWithAsin.sku.push(curr.sku);
            tempData = data.filter(el => el.asin !== curr.asin)
            return tempData.concat(elWithAsin)
          } else {
            return data
          }
        }, data)
      }
    }
  })}
}
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.