Svetlana75
New Member
- Joined
- Jan 15, 2023
- Messages
- 2
- Office Version
- 2013
- Platform
- Windows
Содержание задачи:
- a = "100,500,0,0,2000,0,1000" ; - строка
- b = 1000; - число
- delim = " , " ;
- Найти: result (т.е. в переменной result должна получиться после вычислений новая строка "0,0,0,0,1600,0,1000")
- переменную а преобразую в массив arr (переменная delim используется в преобразовании);
- создаю новый массив newarr, куда будут добавляться новые значения;
- от значения переменной b (1000) вычитаю первый элемент массива arr, получается 900 (положительная разность), поэтому значение первого элемента массива newarr равно 0, значение переменной b равно 900;
- от значения переменной b (900) вычитаю второй элемент массива arr, получается 400 (положительная разность), поэтому значение второго элемента массива newarr равно 0,значение переменной b равно 400;
- в результате вычислений с третьим и четвертым элементом массива arr получаем значения равные 0 (т.е. без изменений);
- пятый элемент массива newarr получает абсолютное значение 1600,значение переменной b равно о и вычисления прерываются;
- провожу конкатенацию массивов: newarr и arr (шестого и седьмого элемента)
Power Query:
let fx=(a as text, b, delim as text)=>
Web.Page(
"<script>
var x = '"& a &"';
var y = '"& Text.From(b) &"';
var z = '"& delim &"';
var arr = x.split(z);
var arrnew = [];
if (y > 0) {
for (let i of arr) {
if ((y-i) < 0) {
i = -(y-i);
arrnew.push(i);
break;
}
y = y-i;
i = 0;
arrnew.push(i);
}
}
arr.splice(0, arrnew.length);
var result = arrnew.concat(arr).join(z);
document.write(result);
</script>")
in
fx