0

this is my input

[
  [
    { jobId: 1, requiredNumber: 1, acceptableRate: 80 },
    { jobId: 2, requiredNumber: 2, acceptableRate: 80 },
    { jobId: 3, requiredNumber: 3, acceptableRate: 80 },
    { jobId: 4, requiredNumber: 1, acceptableRate: 80 }
  ],
  [ { jobId: 2, requiredNumber: 1, acceptableRate: 95 } ],
  null
]

I have been trying to combine this array of objects into a single array, i have tried using .reduce() but i wasn't successful and my output was like this

[
  { jobId: 1, requiredNumber: 1, acceptableRate: 80 },        
  { jobId: 2, requiredNumber: 2, acceptableRate: 80 },        
  { jobId: 3, requiredNumber: 3, acceptableRate: 80 },        
  { jobId: 4, requiredNumber: 1, acceptableRate: 80 }
] [ { jobId: 2, requiredNumber: 1, acceptableRate: 95 } ] null

it was still 2 arrays not a single array

my expected output is

[
    { jobId: 1, requiredNumber: 1, acceptableRate: 80 },
    { jobId: 2, requiredNumber: 2, acceptableRate: 80 },
    { jobId: 3, requiredNumber: 3, acceptableRate: 80 },
    { jobId: 4, requiredNumber: 1, acceptableRate: 80 },
    { jobId: 2, requiredNumber: 1, acceptableRate: 95 }
]

3 Answers 3

3

Flatten the array, and then filter out the objects.

const data=[[{jobId:1,requiredNumber:1,acceptableRate:80},{jobId:2,requiredNumber:2,acceptableRate:80},{jobId:3,requiredNumber:3,acceptableRate:80},{jobId:4,requiredNumber:1,acceptableRate:80}],[{jobId:2,requiredNumber:1,acceptableRate:95}],null];

const out = data.flat().filter(obj => obj);
console.log(out);

const data=[[{jobId:1,requiredNumber:1,acceptableRate:80},{jobId:2,requiredNumber:2,acceptableRate:80},{jobId:3,requiredNumber:3,acceptableRate:80},{jobId:4,requiredNumber:1,acceptableRate:80}],[{jobId:2,requiredNumber:1,acceptableRate:95}],null];

const out = data.flat().filter(Boolean);
console.log(out);

Sign up to request clarification or add additional context in comments.

1 Comment

.filter(Boolean) is prettier than .filter(obj => obj)
0

you should use flat flat function
with a filter to filter out all the null filter function

Comments

0

It could be even simpler than using flat or reduce. It could be just this (using the ... spread operator):

[
  ...[
    { jobId: 1, requiredNumber: 1, acceptableRate: 80 },
    { jobId: 2, requiredNumber: 2, acceptableRate: 80 },
    { jobId: 3, requiredNumber: 3, acceptableRate: 80 },
    { jobId: 4, requiredNumber: 1, acceptableRate: 80 }
  ],
  ...[ 
    { jobId: 2, requiredNumber: 1, acceptableRate: 95 } 
  ]
]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.