Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.07.2017, 12:20
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

Склеить несколько массивов в цикле
Добрый день, есть скрипт:

for (var i = 0; i < other_arr.length; i++) {
	var $other_name = other_arr[i].split('|')[0],
		$other_min = other_arr[i].split('|')[1],
		$other_max = other_arr[i].split('|')[2],
		$product_arr = new Array();

	$('.product').each(function(){
		$product_arr.push( $(this).find('[data-filter_name="'+$other_name+'"]').data('filter_name') + '|' + $(this).find('[data-filter_name="'+$other_name+'"]').data('filter_val').split(' ')[0].replace(',', '.') );
	})
}


Он должен собирает технически характеристики товара в один массив, но по факту массив получается не один, а по одному для каждого технического параметра. Например (результат выполнения console.log($product_arr)):

(4) ["Гарантия|2", "Гарантия|1", "Гарантия|3", "Гарантия|1"]

(4) ["Мощность|10", "Мощность|5", "Мощность|23", "Мощность|10"]

А мне нужно что бы было, вот так:

(8) ["Гарантия|2", "Гарантия|1", "Гарантия|3", "Гарантия|1", "Мощность|10", "Мощность|5", "Мощность|23", "Мощность|10"]

Подскажите пожалуйста как это сделать
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2017, 12:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,086

smart-create,
concat
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2017, 13:08
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

рони, читал, знаю, использую в работе, НО или я не понимаю как правильно его использовать, или это все таки не то что нужно. Объясню почему - у меня нет 2 определенных массивов, например:

arr_1 = ["Гарантия|2", "Гарантия|1", "Гарантия|3", "Гарантия|1"];
arr_1 = ["Мощность|10", "Мощность|5", "Мощность|23", "Мощность|10"];


В таком случае конечно я могу использовать .concat()

newArr = arr_1.concat(arr_2)


И тогда, да я получу ["Гарантия|2", "Гарантия|1", "Гарантия|3", "Гарантия|1", "Мощность|10", "Мощность|5", "Мощность|23", "Мощность|10"]

НО у меня ведь нет arr_1 и arr_2

У меня есть только один массив $product_arr который формируется вот этим скриптом:
for (var i = 0; i < other_arr.length; i++) {
	var $other_name = other_arr[i].split('|')[0],
		$other_min = other_arr[i].split('|')[1],
		$other_max = other_arr[i].split('|')[2],
		$product_arr = new Array();

	$('.product').each(function(){
		$product_arr.push( $(this).find('[data-filter_name="'+$other_name+'"]').data('filter_name') + '|' + $(this).find('[data-filter_name="'+$other_name+'"]').data('filter_val').split(' ')[0].replace(',', '.') );
	})
}

Как я и говорил в результате его выполнения и выводе через console.log(), получается вот это:
(4) ["Гарантия|2", "Гарантия|1", "Гарантия|3", "Гарантия|1"]

(4) ["Мощность|10", "Мощность|5", "Мощность|23", "Мощность|10"]

Как я в этом случае могу использовать .concat()?

newArr = $product_arr.concat($product_arr)


Как вы понимаете с этой затеи нечего не выйдет

P.S. масивов в результате выполнения скрипта может быть и не 2, может быть и 6 и 10 и 15, в зависимости от товара, например:

(4) ["Гарантия|2", "Гарантия|1", "Гарантия|3", "Гарантия|1"]

(4) ["Мощность|10", "Мощность|5", "Мощность|23", "Мощность|10"]

(4) ["Напор|2", "Напор|1", "Напор|3", "Напор|1"]

(4) ["Высота подачи|10", "Высота подачи|5", "Высота подачи|23", "Высота подачи|10"]

(4) ["...", "...", "...", "..."]

(4) ["...", "...", "...", "..."]



P.P.S А нужно что бы было так:

(20) ["Мощность|10", "Мощность|5", "Мощность|23", "Мощность|10", "Напор|2", "Напор|1", "Напор|3", "Напор|1", "Высота подачи|10", "Высота подачи|5", "Высота подачи|23", "Высота подачи|10"], "...", "...", "...", "...", "...", "...", "...", "..."]

Последний раз редактировалось smart-create, 20.07.2017 в 13:14.
Ответить с цитированием
  #4 (permalink)  
Старый 20.07.2017, 13:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,086

smart-create,
не понимаю
Ответить с цитированием
  #5 (permalink)  
Старый 20.07.2017, 13:35
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

рони, ок) есть сайт

зайдите пожалуйста на него и откройте консоль

потяните за любой из ползунков слева и нажмите "ДА"



В консоли вы увидите что выводиться 2 массива, они содержат в себе технические параметры всех товаров на странице (см. изображение)
Ответить с цитированием
  #6 (permalink)  
Старый 20.07.2017, 13:37
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

то что выводится это результат работы скрипта:

for (var i = 0; i < other_arr.length; i++) {
	var $other_name = other_arr[i].split('|')[0],
		$other_min = other_arr[i].split('|')[1],
		$other_max = other_arr[i].split('|')[2],
		$product_arr = new Array();

	$('.product').each(function(){
		$product_arr.push( $(this).find('[data-filter_name="'+$other_name+'"]').data('filter_name') + '|' + $(this).find('[data-filter_name="'+$other_name+'"]').data('filter_val').split(' ')[0].replace(',', '.') );
	})
        console.log($product_arr);
}
Ответить с цитированием
  #7 (permalink)  
Старый 20.07.2017, 13:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,086

smart-create,
спасибо за подробности, но мне не осилить
Ответить с цитированием
  #8 (permalink)  
Старый 20.07.2017, 13:38
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

Мне нужно сделать так что бы массив который содержит в себе "гарантия, гарантия, гарантия" и массив "мощность, мощность, мощность", не были разделены, нужно что бы это был один большой массив
Ответить с цитированием
  #9 (permalink)  
Старый 20.07.2017, 13:40
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

как я могу объяснит что бы было понятно?

Я понимаю что я напрягаю, но если вы уж тут находитесь, все равно проводите здесь время, а мне очнгь нужна помощь, я бьюсь уже 5 день..., может все таки поможете?
Ответить с цитированием
  #10 (permalink)  
Старый 20.07.2017, 13:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от smart-create
нужно что бы это был один большой массив
А каждой гарантии из первого массива соответствует мощность из второго, или каждый сам по себе??
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли принять через ajax несколько массивов? Untropee AJAX и COMET 21 05.08.2015 05:08
Несколько аякс запросов. Склеить данные. ANAGAMA AJAX и COMET 2 04.03.2015 18:01
Пересечение и разность двух массивов harold Общие вопросы Javascript 9 18.12.2013 21:41
popup окно в PHP цикле ryobi522 Общие вопросы Javascript 5 10.02.2012 02:18
как создать в цикле несколько дочерних элементов одного уровня? DimonCry Общие вопросы Javascript 11 13.01.2011 10:46