How to make an array of all the values from the array of arrays

Viewed 48

The Object is this -

clients = [
  [{
      "label": "MongoDb",
      "value": "5ee71c494be8d0180c1b63d6"
    },
    {
      "label": "Hawlett",
      "value": "5ee71b5e4be8d0180c1b63d2"
    },
    {
      "label": "Coca Cola",
      "value": "5ee7195ef2d5e0175c5da986"
    }
  ],
  [{
      "label": "Tarun infotech",
      "value": "5ee71cc94be8d0180c1b63db"
    },
    {
      "label": "Sahara",
      "value": "5ee71c884be8d0180c1b63d9"
    }
  ],
  [{
      "label": "Tarun infotech",
      "value": "5ee71cc94be8d0180c1b63db"
    },
    {
      "label": "Sahara",
      "value": "5ee71c884be8d0180c1b63d9"
    }
  ]
]

I want to make the array in the form shown below to get a new array of object ids to perform further task -

expected = ["5ee71c494be8d0180c1b63d6","5ee71b5e4be8d0180c1b63d2","5ee7195ef2d5e0175c5da986" ....]

Any help would be appreciated. I'm new to Javascript. I hope there's a way to do this in less code.

3 Answers

Use flatMap (place all objects into one array) then map the value property into your array.

const clients = [
  [{
      "label": "MongoDb",
      "value": "5ee71c494be8d0180c1b63d6"
    },
    {
      "label": "Hawlett",
      "value": "5ee71b5e4be8d0180c1b63d2"
    },
    {
      "label": "Coca Cola",
      "value": "5ee7195ef2d5e0175c5da986"
    }
  ],
  [{
      "label": "Tarun infotech",
      "value": "5ee71cc94be8d0180c1b63db"
    },
    {
      "label": "Sahara",
      "value": "5ee71c884be8d0180c1b63d9"
    }
  ],
  [{
      "label": "Tarun infotech",
      "value": "5ee71cc94be8d0180c1b63db"
    },
    {
      "label": "Sahara",
      "value": "5ee71c884be8d0180c1b63d9"
    }
  ]
]

const res = clients
  .flatMap(arr => arr)
  .map(({value}) => value)

console.log(res)

Well use .flat() and then .map()

let clients = [
  [{
      "label": "MongoDb",
      "value": "5ee71c494be8d0180c1b63d6"
    },
    {
      "label": "Hawlett",
      "value": "5ee71b5e4be8d0180c1b63d2"
    },
    {
      "label": "Coca Cola",
      "value": "5ee7195ef2d5e0175c5da986"
    }
  ],
  [{
      "label": "Tarun infotech",
      "value": "5ee71cc94be8d0180c1b63db"
    },
    {
      "label": "Sahara",
      "value": "5ee71c884be8d0180c1b63d9"
    }
  ],
  [{
      "label": "Tarun infotech",
      "value": "5ee71cc94be8d0180c1b63db"
    },
    {
      "label": "Sahara",
      "value": "5ee71c884be8d0180c1b63d9"
    }
  ]
]

let result = clients.flat().map(el => el.value);

console.log(result);

You can use flatMap() and map():

clients = [
    [
        {
            "label": "MongoDb",
            "value": "5ee71c494be8d0180c1b63d6"
        },
        {
            "label": "Hawlett",
            "value": "5ee71b5e4be8d0180c1b63d2"
        },
        {
            "label": "Coca Cola",
            "value": "5ee7195ef2d5e0175c5da986"
        }
    ],
    [
        {
            "label": "Tarun infotech",
            "value": "5ee71cc94be8d0180c1b63db"
        },
        {
            "label": "Sahara",
            "value": "5ee71c884be8d0180c1b63d9"
        }
    ],
    [
        {
            "label": "Tarun infotech",
            "value": "5ee71cc94be8d0180c1b63db"
        },
        {
            "label": "Sahara",
            "value": "5ee71c884be8d0180c1b63d9"
        }
    ]
];

let values = clients.flatMap(c => c.map(a => a.value));
console.log(values);

Related