У меня есть массив с символами, имена которых иногда дублируются.Их братья и сестры - это разные рынки a, b, c .... Теперь мне нужно объединить все дубликаты символов и присоединить к ним рынки.
const theArray = [
{
"symbol": "CAT",
"market_a": "20"
},
{
"symbol": "DOG",
"market_a": "40"
},
{
"symbol": "DUCK",
"market_a": "15"
},
{
"symbol": "CAT",
"market_b": "60"
},
{
"symbol": "DOG",
"market_b": "55"
},
{
"symbol": "FISH",
"market_b": "40"
},
{
"symbol": "CAT",
"market_c": "65"
},
{
"symbol": "DOG",
"market_c": "20"
},
{
"symbol": "FISH",
"market_c": "70"
}
]
и т. Д.
Этоследует объединить так:
{
"symbol": "CAT",
"market_a: "20",
"market_b: "60",
"market_c: "65"
},
{
"symbol": "DOG",
"market_a": "40",
"market_b": "55",
"market_c": "20",
},
{
"symbol": "FISH",
"market_b": "40",
"market_c": "70"
}
и т. д.
Что я пробовал до сих пор:
function groupBy(arr, p) {
return arr.reduce(function (acc, obj) {
var key = obj[p];
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(obj);
return acc;
}, {});
}
var final = groupBy(theArray, 'symbol');
console.log(final)
Я также хотел бы изучить некоторые практики ES6 / стрелкаиспользование функции, так как я хочу использовать это в React для вывода JSX внутри строк таблицы.например:
var market = formattedArray.map((i, k) => {
return (
<tr key={k}>
<td className="td-symbol">{i.symbol}</td>
<td className="td-price">{i.market_a}</td>
<td className="td-price">{i.market_b}</td>
<td className="td-price">{i.market_c}</td>
</tr>
)
})