Показать сообщение отдельно
  #1 (permalink)  
Старый 22.11.2017, 18:14
Аспирант
Отправить личное сообщение для ami_moor Посмотреть профиль Найти все сообщения от ami_moor
 
Регистрация: 27.08.2013
Сообщений: 32

функция позволяющая фиксировать все аргументы
Задача взята с http://dkab.github.io/jasmine-tests/?spec=6

Суть: Написать функцию partialAny которая позволяет фиксировать зафиксировать любые аргументы, пропущенные аргументы обозначаются с помощью undefined:

Написала cследующее, но не прошла тестировку, выдаёт следующее "может вызываться несколько раз и результаты во второй раз не зависят от первого" направьте меня как переписать правильно..:
function partialAny() {
	var func = arguments[0];

	var masArg = [];
	var masArg2 = [];
	var count = 0;
	for(let k=1; k<arguments.length; k++) {
		masArg[k-1] = arguments[k];
	}
	return function() {
		for(let k=0; k<arguments.length; k++) {
			masArg2[k] = arguments[k];
		}
		for(let z=0; z<masArg.length; z++) {

			if(masArg[z] === undefined) {
			
				masArg[z] = masArg2[count];
				count++;
			}
		}
		for(let z=count; z<masArg2.length; z++) {
			masArg[masArg.length] = masArg2[z];
		}
		return func.apply(this, masArg);
	}
}

function test(a, b, c) { return "a=" + a + ", b=" + b + ", c=" +  c}
var test1_3 = partialAny(test, 1, undefined, 3, undefined);
console.log(test1_3(5, 9, 22, "asdasd")); // a=1,b=5,c=3
console.log(test1_3(1, 2, 4, "7")); // должна вывести a=1,b=2,c=3   а выводит a=1,b=5,c=3 (т.е предыдущее значение)
Ответить с цитированием