Jenifer_009
Jenifer_009

Reputation: 43

Map object inside array in javascript?

This is my array:

const array = [
    {
        "fare": "399.00",
        "passenger": {
            "age": "21",
            "gender": "MALE",
            "name": "Test1"
        },
    },
    {
        "fare": "399.00",
        "passenger": {
            "age": "21",
            "gender": "FEMALE",
            "name": "Test2"
        },
    }
]

How to map the object inside the array, and how to convert the object to the required output

Required output:

Test1(M), Test2(F)

Above contains "name" and gender - if its male then just "M" and if its female just "F"

As of now i tried,

array.map(o => ({ name: o.passenger.name, gender: o.passenger.gender })))

But how to convert this as expected output !

Upvotes: 0

Views: 113

Answers (5)

Siva Kondapi Venkata
Siva Kondapi Venkata

Reputation: 11011

Use map and destructruing

const tests = (arr) =>
  arr
    .map(
      ({
        passenger: {
          gender: [G],
          name,
        },
      }) => `${name}(${G})`
    )
    .join(", ");

const array = [
  {
    fare: "399.00",
    passenger: {
      age: "21",
      gender: "MALE",
      name: "Test1",
    },
  },
  {
    fare: "399.00",
    passenger: {
      age: "21",
      gender: "FEMALE",
      name: "Test2",
    },
  },
];

console.log(tests(array));

Upvotes: 0

mplungjan
mplungjan

Reputation: 178384

Like this

const array = [{ "fare": "399.00", "passenger": { "age": "21", "gender": "MALE", "name": "Test1" }, }, { "fare": "399.00", "passenger": { "age": "21", "gender": "FEMALE", "name": "Test2" }, } ];

const output = array
  .map(({passenger}) => `${passenger.name}(${passenger.gender.slice(0,1)})`)
  .join(", ")

console.log(output); 

Upvotes: 2

Thomas Sablik
Thomas Sablik

Reputation: 16447

You can convert the objects to strings and join them

const array = [{ "fare": "399.00", "passenger": { "age": "21", "gender": "MALE", "name": "Test1" }, }, { "fare": "399.00", "passenger": { "age": "21", "gender": "FEMALE", "name": "Test2" }, } ]

const output = array.map(o => o.passenger.name + (o.passenger.gender === "MALE" ? "(M)" : "(F)")).join(', ')

console.log(output)

Upvotes: 0

Pierre
Pierre

Reputation: 1287

Is this the expected result you want?

const array = [{
  "fare": "399.00",
  "passenger": {
    "age": "21",
    "gender": "MALE",
    "name": "Test1"
  },
}, {
  "fare": "399.00",
  "passenger": {
    "age": "21",
    "gender": "FEMALE",
    "name": "Test2"
  },
}]

const passengers = array.map(o => {
  const gender = o.passenger.gender == 'MALE' ? 'M' : 'F';
  return o.passenger.name + '(' + gender + ')';
})

console.log(passengers.join(', ')); // Test1(M), Test2(F)

Upvotes: 0

Justinas
Justinas

Reputation: 43547

Simply loop your array and make new string:

const array = [
        {
            "fare": "399.00",
            "passenger": {
                "age": "21",
                "gender": "MALE",
                "name": "Test1"
            },
        },
        {
            "fare": "399.00",
            "passenger": {
                "age": "21",
                "gender": "FEMALE",
                "name": "Test2"
            },
        }
    ];
    
var states = array.map((o) => o.passenger.name + '(' + o.passenger.gender.substring(0, 1) + ')')

console.log(states);

Upvotes: 0

Related Questions