В Javascript у меня есть массив с объектами, который выглядит следующим образом:
var arr = [
{
value_1: 0,
value_2: 4,
encounter_bits: {
min_level: 8,
max_level: 12,
rarity: 20,
conditions: [1, 5]
}
},
{
value_1: 1,
value_2: 4,
encounter_bits: {
min_level: 5,
max_level: 5,
rarity: 20,
conditions: [2, 9]
}
},
{
value_1: 0,
value_2: 4,
encounter_bits: {
min_level: 8,
max_level: 12,
rarity: 5,
conditions: [1, 5]
}
},
];
Мне нужно объединить объекты, которые имеют одинаковые min_level, max_level и условия.Слитые объекты будут иметь свою редкость.Мне также нужно сохранить порядок массивов.
Таким образом, arr [0] и arr [2] станут:
arr[0] = {
value_1: 0,
value_2: 4,
encounter_bits: {
min_level: 8,
max_level: 12,
rarity: 25,
conditions: [1, 5]
}
}
Из примерно одного и того же набора данных это делается в Python:
# Combine "level 3-4, 50%" and "level 3-4, 20%" into "level 3-4, 70%".
existing_encounter = filter(lambda enc: enc['min_level'] == encounter.min_level
and enc['max_level'] == encounter.max_level,
encounter_bits)
if existing_encounter:
existing_encounter[0]['rarity'] += encounter.slot.rarity
else:
encounter_bits.append({
'min_level': encounter.min_level,
'max_level': encounter.max_level,
'rarity': encounter.slot.rarity,
})
Я знаю, что мне, возможно, придется что-то делать с array.sort и array.splice, но я не могу понять это.Какой самый эффективный способ добиться этого?