Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.11.2014, 14:10
Интересующийся
Отправить личное сообщение для Brainsss Посмотреть профиль Найти все сообщения от Brainsss
 
Регистрация: 17.11.2014
Сообщений: 10

Передача аргументом функции функцию
Добрый день всем. Не могу разобраться с следующим примером.
Есть функция в которой аргументами выступают массив и функция. Нужно написать тело функции, что бы аргументами выступали элемент массива, индекс элемента массива и сам массив.
function knowName(arr, func){
//тело функции ???
}

Что бы при вызове функции передавались аргументы указанные выше. Например:
knowName([1,2,3,4], function(elem, index, arr){// какой то код который оперирует elem, index, arr})

Где elem - элементы массива,
index - индекс элемента массива,
arr - сам массив.
Ответить с цитированием
  #2 (permalink)  
Старый 17.11.2014, 14:15
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

function one (array, fn) {
	for (var i = 0, ln = array.length; i < ln; ++i) {
		fn(array[i], i, array);
	}
}

one ([1, 2, 3], function (el, i, ar) {
	console.log(el);
	console.log(i);
	console.log(ar);
});
Ответить с цитированием
  #3 (permalink)  
Старый 17.11.2014, 14:38
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Чем нативный forEach не устроил?
Ответить с цитированием
  #4 (permalink)  
Старый 17.11.2014, 14:43
Интересующийся
Отправить личное сообщение для Brainsss Посмотреть профиль Найти все сообщения от Brainsss
 
Регистрация: 17.11.2014
Сообщений: 10

Мне нужно самому написать, или придумать логику. Где можно найти код функции forEach?
Ответить с цитированием
  #5 (permalink)  
Старый 17.11.2014, 15:00
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

function forEach (array, fn) {
for (var i = 0, ln = array.length; i < ln; ++i) {
        fn(array[i], i);
    }
}

forEach([1,2,3], function (v) {console.log(v);})


есть встроенный в современных браузерах
[1, 2, 3].forEach(function (v) {console.log(v);})
Ответить с цитированием
  #6 (permalink)  
Старый 17.11.2014, 15:07
Интересующийся
Отправить личное сообщение для Brainsss Посмотреть профиль Найти все сообщения от Brainsss
 
Регистрация: 17.11.2014
Сообщений: 10

А если нам нужно что то возвращать? Например такой код
function example(arr, func) {
	for (var i = 0; i < arr.length; i++) {
		func(arr[i], i);
		}
	}
var a = example(['abc', 'def', 'ghi'], function (elem) {
	return typeof elem === 'string';
});
console.log(a);

Почему выводит undefined? И как сделать что бы с return нормально работало?
Ответить с цитированием
  #7 (permalink)  
Старый 17.11.2014, 15:08
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
for (var i = 0, *!*ln = array.length; i < ln*/!*; ++i) {
        fn(array[i], i);
    }
}
Зачем так?
for (var i = 0; i < array.length; ++i) {
        fn(array[i], i);
    }
Ответить с цитированием
  #8 (permalink)  
Старый 17.11.2014, 15:10
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Сообщение от Brainsss Посмотреть сообщение
А если нам нужно что то возвращать? Например такой код
function example(arr, func) {
	for (var i = 0; i < arr.length; i++) {
		func(arr[i], i);
		}
	}
var a = example(['abc', 'def', 'ghi'], function (elem) {
	return typeof elem === 'string';
});
console.log(a);

Почему выводит undefined?
Потому что функция example ничего не вернула - логично, да?
Ответить с цитированием
  #9 (permalink)  
Старый 17.11.2014, 15:12
Интересующийся
Отправить личное сообщение для Brainsss Посмотреть профиль Найти все сообщения от Brainsss
 
Регистрация: 17.11.2014
Сообщений: 10

А как все это связать, когда пишу return в example, работает не так как ожидалось. Подскажите плиз
Ответить с цитированием
  #10 (permalink)  
Старый 17.11.2014, 15:13
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Erolast
Зачем так?
Чтобы каждый раз не обращаться к свойству length. Просто, так быстрее работает, но это тут вообще не принципиально, ибо разница в скорости ничтожна.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача в функцию переменного количества аргументов Эдди Элементы интерфейса 35 09.11.2018 15:25
передача объекта через параметр функции PHP zhurchik Серверные языки и технологии 1 06.12.2012 15:24
передача функции с параметрами в функцию oli Общие вопросы Javascript 3 09.08.2012 13:52
Передача значения из функции в функцию wine-time Общие вопросы Javascript 4 18.09.2011 17:39
Передача функции другой функции ntro123 jQuery 3 20.02.2011 12:15