Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Решение одной простой... задачи (https://javascript.ru/forum/misc/73898-reshenie-odnojj-prostojj-zadachi.html)

K_Artem 26.05.2018 17:45

Решение одной простой... задачи
 
/* 6
 * Написать функцию, которая может зафиксировать любые аргументы,
 * пропущенные аргументы обозначаются с помощью undefined:
 */

function test() { return arguments }
var test1_3 = partialAny(test, 1, undefined, 3);
console.log(test1_3(5)); // a=1,b=5,c=3

// Моя функция
function partialAny(fn) {

	var arrFixArgs = [];

	for (var i = 1; i < arguments.length; i++) {

		arrFixArgs.push(arguments[i]);

	}

	return function () {

		var arrArgs = arrFixArgs.slice(),
			j = 0;

		for (var i = 0; i < arrArgs.length; i++) {

			if (arrArgs[i] === undefined) {

				arrArgs[i] = arguments[j++]

			}

		}

		return fn.apply(this, arrArgs);

	}

}


Функция вроде работает, но мне сказали, что функция должна подставлять лишние аргументы в конец списка: partialAny(fn, 1)(2, 3) -> [1, 2, 3]

Это как? :(

рони 26.05.2018 18:51

Цитата:

Сообщение от K_Artem
Это как?

строка 35 нужно дописать (что именно: смотреть как образец строку 15)

рони 24.10.2024 03:06

K_Artem,
function test() { return arguments }
var test1_3 = partialAny(test, 1, undefined, 3);
console.log(test1_3(5)); // 1,5,3
console.log( partialAny(test, 1)(2, 3))//  [1, 2, 3]
// Моя функция
function partialAny(...arg) {
	let [fn, ...arrFixArgs] = arg;
	return function (...arg) {
	  let	j = 0;
      let  arrArgs = arrFixArgs.map((e, i) => e === undefined ? arg[j++] : e)
      arrArgs =  arrArgs.concat(arg.slice(j));
		return fn.apply(this, arrArgs);
	}
}


Часовой пояс GMT +3, время: 09:01.