Вы можете использовать reduce
, если исходный массив не должен изменяться.
const arrayA = [
{
type: 'card',
id: 1
},
{
type: 'card',
id: 2
},
{
type: 'card',
id: 3
},
{
type: 'card',
id: 4
},
{
type: 'card',
id: 5
},
];
const arrayB = [
{
type: 'pro-tip',
id: 10
},
{
type: 'pro-tip',
id: 11
},
];
const res = arrayA.reduce((acc, a, i) => {
const b = arrayB[(i + 1) / 2 - 1];
return [...acc, a, ...(b ? [b] : [])];
}, []);
console.log(res);
Вы можете сделать это в одну строку следующим образом:
from itertools import compress
d2 = dict((k, sum(compress(d1['vals'], (x == k for x in d1['inds'])))) for k in set(d1['inds']))
Однако, это не так уж интуитивно понятно. Я надеюсь, что кто-то придумает лучший ответ :)