takePoints = (points, sub) => sub.reduce((sum, subCurrent, subIndex, array) => (sum + points.reduce((sum, current, index) =>subCurrent > index && (array[subIndex - 1 ] ^ 0) <= index ? sum + current : sum, 0)) * 0.85, 0)+ points.reduce((sum, current, index) => sub[sub.length - 1] <= index ? current + sum : sum, 0)console.log(takePoints([120, 78, 20, 500, 360], [2, 3])) // 1020.055
takePoints = (points, sub) => sub.reduce((sum, subCurrent, subIndex, array) =>
(sum + points.reduce((sum, current, index) =>
subCurrent > index && (array[subIndex - 1 ] ^ 0) <= index ? sum + current : sum, 0)) * 0.85, 0)
+ points.reduce((sum, current, index) => sub[sub.length - 1] <= index ? current + sum : sum, 0)
console.log(takePoints([120, 78, 20, 500, 360], [2, 3])) // 1020.055