evgeniy8705
@evgeniy8705
Повелитель вселенной

Как проверить все элементы подмассивов?

Как проверить все элементы массива, даже если элементамы находятся на любой вложенности подмассивов?

Например есть массив:

[[1, 2, 3], 4, 5, 6, 7, 8, [9, 10, 11, [12, 13, 14]]]

Вот как осуществить проверку всех элементов, например если все элементы положительные то вернется true, иначе если есть хоть один отрицательный, вернется false?

Я попробовал что то написать но это так, предположения, сразу было ясно что ничего не получится.
function func(arr) {
  for (var i = 0, len = arr.length; i < len; i += 1) {
    if (typeof arr[i] != "array" && arr[i] > 0) {
      continue;
    } else if (arr[i] < 0) {
      return false;
    } else {
      func(arr[i]);
    }
  }

  return true;
}
  • Вопрос задан
  • 344 просмотра
Решения вопроса 1
mannaro
@mannaro Куратор тега JavaScript
Умею профессионально гуглить
Элементарная рекурсия ведь)

var arr = [[1, 2, 3], 4, 5, 6, 7, 8, [9, 10, 11, [12, 13, 14]]];

function checker(val) {
  return val > 1;
}

function check(arr) {
  return arr.every(function(item) {
    if(Array.isArray(item)) {
      return check(item);
    } else {
      return checker(item);
    }
  });
}

console.log(check(arr));
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
function checkarr(arr) {
  for(var i = 0; i < arr.length; i++) {
    if (typeof arr[i] == 'object') checkarr(arr[i]);
    else if (arr[i] < 0) return false;
  }
  return true;
}
Ответ написан
@AmadeyMinisol
full stack web-developer
попробуйте так
function check_array(array){
	var result = true;
	for(var i in array){
		if(typeof array[i] == "object"){
			result = check_array(array[i]);
		}else{
			if(array[i] < 0) result = false;
		}
		if(!result) return result;
	}
	return result;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы