Home > Software engineering >  Returning a array of objects by reducing and array
Returning a array of objects by reducing and array

Time:11-24

I'm trying to return an array of objects from an array. So for example. I have an array of strings:

const strArr = ["Some", "Thing"];

And I need to return an Array with 2 objects for each position from the strArr, for example:

result:
[{first_key: "Some"}, {second_key: "Some"}, {first_key: "Thing"}, {second_key: "Thing"}]

I have done this, which works, but I rather work without let:

const numeros = ["some", 'thing']
let arr = [];
numeros.map(valor => {
    const titleContains = {
      title_contains: valor,
    }
    const bodyContains = {
      body_contains: valor,
    }
    
    arr.push(titleContains);
    arr.push(bodyContains);
});

console.log(arr)

This code gives me the right result, althought map is being used wrong and I'm have to use a let which I don't want to.

CodePudding user response:

You could take Array#flatMap and return two objects for each value.

const
    data = ["Some", "Thing"],
    result = data.flatMap(valor => [{ first_key: valor }, { second_key: valor }]);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

CodePudding user response:

Here's a version with a reduce, you can read more about it here :)

const numeros = ["some", 'thing']
const arr = numeros.reduce((acc, valor) => {
    const titleContains = {
      title_contains: valor,
    }
    const bodyContains = {
      body_contains: valor,
    }
    
    acc.push(titleContains);
    acc.push(bodyContains);
    return acc;
}, []); // <==== note an empty array here.

console.log(arr)
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

  • Related