Home > Blockchain >  how to get object keys of a object within an array
how to get object keys of a object within an array

Time:08-16

i have following data which iam getting from an API call

{
"articles": {
    "articles": [
        {
            "active": true,
            "scanCodes": [
                "356448",
                "875736475896"
            ],
            "stock": {
                "1": {
                    "stockCurrent": 6.0,
                    "stockCustomValue": 0.0,
                    "stockMinimum": 4.0,
                    "stockTarget": 14.0
                }
            },
            "taxRate": 7.0
        },
        {
            "active": true,
            "scanCodes": [
                "682360596",
                "2355235",
                "235235235"
            ],
            "stock": {
                "1": {
                    "stockCurrent": 1.0,
                    "stockCustomValue": 1.0,
                    "stockMinimum": 2.0,
                    "stockTarget": 6.0
                },
                "3": {
                    "stockCurrent": 4.0,
                    "stockCustomValue": 0.0,
                    "stockMinimum": 2.0,
                    "stockTarget": 7.0
                }
            },
            "taxRate": 7.0
        },
        {
            "active": true,
            "scanCodes": [
                "50001112547160"
            ],
            "stock": {
                "1": {
                    "stockCurrent": 1.0,
                    "stockCustomValue": 1.0,
                    "stockMinimum": 2.0,
                    "stockTarget": 7.0
                },
                "2": {
                    "stockCurrent": 2.0,
                    "stockCustomValue": 0.0,
                    "stockMinimum": 0.0,
                    "stockTarget": 1.0
                }
            },
            "taxRate": 7.0
        },
    ]
}
}

I only need stock unique object keys of each article something like this ["1","2","3","5"....etc]

I have tried this code and so many others but still have not gotten the correct result please help me out I will be really thankful to you

resp.data.articles.articles.
                        reduce((p, c) => {
                            let { stock } = c
                            return { ...p.stock   Object.keys(stock) };
                        }, {})

CodePudding user response:

Here is a simple solution:

const arr = [];
data.articles.articles.forEach(article => arr.push(...Object.keys(article.stock)));
const requiredList = [...new Set(arr)];

CodePudding user response:

The point here to loop through articles which is an array, and each item has a stock array of objects, and you want the keys.

let art = data.articles.articles;
let stockIds = [];
// loop through the articles
for (let a in art) {
    // loop throgh the stock array in each article
    for (let s in art[a].stock) {
        // Grab the stock key
        stockIds.push(s);
  }
}

//remove duplicates
let uniqueStockIds = uniq = [...new Set(stockIds)]
  • Related