17.11.2014, 15:24
|
Интересующийся
|
|
Регистрация: 17.11.2014
Сообщений: 10
|
|
Сообщение от Erolast
|
Потому что функция example ничего не вернула - логично, да?
|
А как должно быть?
function example(arr, func) {
for (var i = 0; i < arr.length; i++) {
func(arr[i], i);
}
return func();
}
так?
|
|
17.11.2014, 15:26
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
Brainsss, а что ты хочешь, чтобы она возвращала?
|
|
17.11.2014, 15:29
|
Интересующийся
|
|
Регистрация: 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) {
console.log(elem)
return typeof elem === 'string';
});
console.log(a);
в данном случае должно быть true.
|
|
17.11.2014, 15:31
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
Brainsss, ну так ведь не логично. У тебя же несколько элементов в массиве, следовательно, на каждый элемент своя операция, а вернуть должно что-то одно.
|
|
17.11.2014, 15:34
|
Интересующийся
|
|
Регистрация: 17.11.2014
Сообщений: 10
|
|
А нельзя так сделать, что бы проверяло каждый элемент, и если все тру то тру, если хоть один фолс, то и возвращает фолс?
|
|
17.11.2014, 15:37
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от 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? И как сделать что бы с return нормально работало?
|
function example(arr, func) {
try{
for (var i = 0; i < arr.length; i++) {
func(arr[i], i);
}
}catch(e){return e}
}
var a = example(['abc', 'def', 'ghi'], function (elem) {
throw typeof elem === 'string';
});
console.log(a);
|
|
17.11.2014, 15:44
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
Brainsss,
function arrayTypeOf(array, type) {
for(var i=0; i<array.length; i++) {
if(typeof array[i] != type) return false;
}
return true;
};
var a = arrayTypeOf(['abc', 'def', 'ghi'], 'string');
alert(a); //true
var b = arrayTypeOf(['abc', 'def', 5], 'string');
alert(b); //false
var c = arrayTypeOf([1, 4, 2], 'number');
alert(c); //true
|
|
17.11.2014, 15:47
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Сообщение от krutoy
|
function example(arr, func) {
*!*try{*/!*
for (var i = 0; i < arr.length; i++) {
func(arr[i], i);
}
*!*}catch(e){return e}*/!*
}
var a = example(['abc', 'def', 'ghi'], function (elem) {
*!*throw*/!* typeof elem === 'string';
});
console.log(a);
|
Что за новый прием?
|
|
17.11.2014, 15:49
|
Интересующийся
|
|
Регистрация: 17.11.2014
Сообщений: 10
|
|
Да, это понятно, но смысл в том что должна быть именно функция в параметрах которой тоже функция( в которой могут меняться условия для проверки элементов массива и индексов эл массива). Но все равно спасибо.
|
|
17.11.2014, 15:51
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
Brainsss, для таких случаев есть нативный метод массива - filter. Рекомендую почитать про него.
|
|
|
|