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>