Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.07.2014, 11:05
Аспирант
Отправить личное сообщение для nesfiraty Посмотреть профиль Найти все сообщения от nesfiraty
 
Регистрация: 15.07.2014
Сообщений: 30

Сравнение элементов массивов
Ребят такой вопрос есть два массива array1 = ["п","р","ы","в","е","т"] и второй array2 = ["п","р"]

необходимо первый элемент массива array2 сравнить с каждым элементом массива array1 как это реализуется?? Прошу не судить строго только начал изучать и пытаюсь писать свои функции))
Ответить с цитированием
  #2 (permalink)  
Старый 16.07.2014, 11:36
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

<html>
	<head>
		<title>example</title>
	</head>
	<body>
		<script>
			//создаем массивы
			var array1 = ["п","р","ы","в","е","т"],
				array2 = ["п","р"];
			
			//у каждого массива есть очень важное свойство - это длинна массива. чтобы ее узнать
			//необходимо прописать имя_массива.length т.е. array1.length
			
			//попробуем вывести длинну в консоль
			console.log(array1.length);
			console.log(array2.length);
			
			//здесь будем хранить значение элемента
			var cache;
			
			//сохраним длины массивов:
			var ln1 = array1.length
				ln2 = array2.length;
			
			//теперь делаем цикл
			for (var i = 0; i < ln1; ++i)
				{
				cache = array1[i];
				
				for (var j = 0; j < ln2; ++j)
					{
					if (cache == array2[j])
						{
						console.log('найдено совпадение: ' + cache);
						break;
						}
					}
				}
		</script>
	</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 16.07.2014, 11:41
Аспирант
Отправить личное сообщение для nesfiraty Посмотреть профиль Найти все сообщения от nesfiraty
 
Регистрация: 15.07.2014
Сообщений: 30

спасибо попробую применить ))
Ответить с цитированием
  #4 (permalink)  
Старый 16.07.2014, 11:53
Аспирант
Отправить личное сообщение для nesfiraty Посмотреть профиль Найти все сообщения от nesfiraty
 
Регистрация: 15.07.2014
Сообщений: 30

проблема в том что я начинающий и мне пока трудно ориентироваться в циклах и прочих нюансах)) они пока не очевидны для меня хотя теоретически их освоил))) но думаю со временем мозг окрепнет и рука набъется)))
Ответить с цитированием
  #5 (permalink)  
Старый 16.07.2014, 12:12
Аспирант
Отправить личное сообщение для nesfiraty Посмотреть профиль Найти все сообщения от nesfiraty
 
Регистрация: 15.07.2014
Сообщений: 30

подскажи пожалуйста как правильно определять когда нужно использовать префиксную а когда постфиксную запись инкремента?? я с их теоретической основой знаком но на практике никак не пойму)) они ж блин работают практически одинаково))
Ответить с цитированием
  #6 (permalink)  
Старый 16.07.2014, 12:27
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от nesfiraty
как правильно определять когда нужно использовать префиксную а когда постфиксную запись инкремента?? я с их теоретической основой знаком но на практике никак не пойму))
Этот выбор определяет поведение, которое требуется Иногда, как например, в цикле for, это не имеет значения. Хотя я чаще вижу (и сам привык) к постфиксной записи. А вот пример, где это важно:
var array = ["a", "b"];
var index = array.length;

// выведет только "b", потому что нужно, чтобы в условие
// предыдущее значение. Надо использовать index--.
while (--index) alert( array[index] );
Ответить с цитированием
  #7 (permalink)  
Старый 16.07.2014, 12:57
Аспирант
Отправить личное сообщение для nesfiraty Посмотреть профиль Найти все сообщения от nesfiraty
 
Регистрация: 15.07.2014
Сообщений: 30

спасибо))) ох блин как все не просто)))
Ответить с цитированием
  #8 (permalink)  
Старый 16.07.2014, 13:13
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от nesfiraty
мне пока трудно ориентироваться в циклах и прочих нюансах)) они пока не очевидны для меня)))
На мой взгляд, циклы в принципе неочевидны. Да без них можно и обойтись. Я считаю, более правильным не хреначить всё за раз кучей циклов, а разбивать задачу на кусочки. Допустим, нужно проверять, входит ли массив в другой массив. Сравнение массивов можно вынести отдельно. Опять же, вдруг ещё где пригодится. И получается:
function isEqual(a, b) {
  return a.length == b.length && a.every(isEqual, b);
  
  function isEqual(value, index) {
    return value === this[index];
  }
};

function contains(a, b) {
  return a.length >= b.length && a.some(contains, b);
  
  function contains(value, index, array) {
    var slice = array.slice(index, index + this.length);
    return isEqual(slice, this);
  }
};


var array1 = ["п","р","ы","в","е","т"],
    array2 = ["п","р"];
    
alert( contains(array1, array2) );

На практике, лично мне, почти всегда, для манипуляций с массивами, хватает стандартных методов forEach, map, filter, indexOf, reduce.
Ответить с цитированием
  #9 (permalink)  
Старый 16.07.2014, 17:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068


var array1 = ["п", "р", "ы", "в", "е", "т"],
    array2 = ["п", "р"]
alert(array1.map(function (el) {
    return el == array2[0]
}));
Ответить с цитированием
  #10 (permalink)  
Старый 16.07.2014, 19:03
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Sweet
Я считаю, более правильным не хреначить всё за раз кучей циклов, а разбивать задачу на кусочки. Допустим, нужно проверять, входит ли массив в другой массив. Сравнение массивов можно вынести отдельно. Опять же, вдруг ещё где пригодится. И получается
sugarjs или lowdash. Я использую первое.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение всех элементов двух массивов. sharun Общие вопросы Javascript 27 14.05.2018 15:38
Пересечение и разность двух массивов harold Общие вопросы Javascript 9 18.12.2013 21:41
сравнение массивов bot87 Общие вопросы Javascript 4 22.09.2012 01:31
Удаление элементов через splice. возможно ли оптимизировать? Storan Общие вопросы Javascript 0 01.10.2011 21:16
Как ограничить количество элементов (списков <li>) массивов Naum Элементы интерфейса 2 04.04.2011 11:56