md has
md has

Reputation: 35

Replacing array value with objects

I have this JavaScript object:

  const DayOfWeek = [
    { key: 'MON', value: 'M' },
    { key: 'TUE', value: 'T' },
    { key: 'WED', value: 'W' },
    { key: 'THU', value: 'T' },
    { key: 'FRI', value: 'F' },
    { key: 'SAT', value: 'S' },
    { key: 'SUN', value: 'S' },
  ];

Note: If frequencyDayOfWeek is WED replace with object { key: 'WED', value: 'W' }

let frequencyDayOfWeek = [
  "WED",
  "THU",
  "FRI",
  "SAT"
];

frequencyDayOfWeek.map((day, index) => { //not working
  day.find((data, i) => {
    if (DayOfWeek[i].key == data) {
      //return match arrays of object;
      //  [{ key: 'MON', value: 'M' }]
      //  [{ key: 'WED', value: 'W' }]
    }
  })
});

So here is the result I want to get:

 "frequencyDayOfWeek": [
    { key: 'WED', value: 'W' },
    { key: 'THU', value: 'T' },
    { key: 'FRI', value: 'F' },
    { key: 'SAT', value: 'S' },
   ]

How can I implement it using JavaScript?

Upvotes: 0

Views: 74

Answers (2)

Zahid Abdul Aziz
Zahid Abdul Aziz

Reputation: 44

frequencyDayOfWeek.map(f => DayOfWeek.find(d => d.key === f));

Upvotes: 0

Yoshi
Yoshi

Reputation: 54659

You need to return a value from the mapping function.

For example:

const DayOfWeek = [
  { key: 'MON', value: 'M' },
  { key: 'TUE', value: 'T' },
  { key: 'WED', value: 'W' },
  { key: 'THU', value: 'T' },
  { key: 'FRI', value: 'F' },
  { key: 'SAT', value: 'S' },
  { key: 'SUN', value: 'S' },
];

let frequencyDayOfWeek =  [
  "WED",
  "THU",
  "FRI",
  "SAT"
];

const out = frequencyDayOfWeek.map(k => {
  // actually return a value
  return DayOfWeek.find(x => x.key === k);
});

// or short:
// const out = frequencyDayOfWeek.map(k => DayOfWeek.find(x => x.key === k));

console.log(out);

Upvotes: 1

Related Questions