Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вывод списка по количеству переменных (https://javascript.ru/forum/dom-window/45375-vyvod-spiska-po-kolichestvu-peremennykh.html)

utb 26.02.2014 09:57

Вывод списка по количеству переменных
 
Здравствуйте,
Как можно решить следующую задачу:
В переменные попадает строка с информацией (если она есть), при этом необходимо вывести только первые 5 строки (может быть только 1 строка с информацией, остальные пустые), остальные (если строк оказалось > 5 ) записать в переменную и например вывести в другом месте.

ksa 26.02.2014 13:58

utb, тут бэ, кагбэ по-русски это прочитать...

рони 26.02.2014 14:51

ksa,
:victory:

utb 26.02.2014 15:17

:)
Сейчас попробую:
есть характеристики товара: вес, стоимость и т.д.
У разных товаров разное количество заполненных характеристик.
Мне надо вывести только первые 5 характеристик в блок, остальные в другой блок.
Понятнее стало? :)

var a = "12кг";
var b = "10 мин";
var c = null;
var d = "бла бла";
var e = "бла бла 1";
var j = "бла бла 1";

/* добавляем разные плюшки к переменным, приводим в читабельный вид и т.д.*/

var str1 = a + b + d // надо вывести только существующие первые 3
var str2 = e+j; // остальные в др переменную

addToHTml(id,str); // функция вставляет в html
addToHTml(id2,str2); // функция вставляет в html

рони 26.02.2014 15:25

utb,
забейте все данные в массив разрешьте по индексу 3 на два массива -- в каждом уберите ячейки без данных и выведите в нужное место.

рони 26.02.2014 15:36

utb,
или так
var a = "12кг";
var b = "10 мин";
var c = null;
var d = "бла бла";
var e = "бла бла 1";
var j = "бла бла 1";
function sort()
{  var str1 = '',str2 = '';
   for (var i=0; i< arguments.length; i++)  {
     i < 3 && arguments[i] && (str1 += arguments[i]);
     i >= 3 && arguments[i] && (str2 += arguments[i]);
   }
   return [str1,str2]
}
alert(sort(a, b, c, d, e, j).join('\n'))

ksa 26.02.2014 15:37

Цитата:

Сообщение от рони
забейте все данные в массив

Или в объект... Т.о. можно делать массив объектов/товаров...

utb 27.02.2014 11:23

рони,
спасибо, но получается немного не то, если вывести только str1, то выведет "12кг10 мин", а должно выводить первые три существующие свойства, т.е. пустые свойства надо пропускать.
В цикле использовать условия? или лучше проверку всех аргументов сделать ?

з.ы.
можно так, как вариант?
var a = "12кг";
var b = "10 мин";
var c = null;
var c1 = "";
var d = "бла бла";
var e = "бла бла 1";
var j = "бла бла 1";
function sort()
{  var str1 = '',str2 = '';
var num = 3;
   for (var i=0; i< arguments.length; i++)  {
if(arguments[i]) {
     i < num && arguments[i] && (str1 += arguments[i]);
     i >= num && arguments[i] && (str2 += arguments[i]);
} else {
num++;
}
   }
   return str1;
}
var test = sort(a, b, c, c1, d, e, j);
alert(test);


з.ы.ы. а как сделать запускающийся код? :)

рони 27.02.2014 12:05

Цитата:

Сообщение от utb
i < num && arguments[i] && (str1 += arguments[i]);

двойная проверка - можно убрать

Цитата:

Сообщение от utb
как сделать запускающийся код?

[JS run][/JS]

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 27.02.2014 12:11

utb,
var a = "12кг";
var b = "10 мин";
var c = null;
var c1 = "";
var d = "бла бла";
var e = "бла бла 1";
var j = "бла бла 1";
function sort()
{  var str1 = '',str2 = '';
var num = 0;
   for (var i=0; i< arguments.length; i++)  {
if(arguments[i]) {
     num < 3  && (str1 += arguments[i]);
     num >= 3  && (str2 += arguments[i]);
     num++;
}
   }
   return [str1,str2];
}
var test = sort(a, b, c, c1, d, e, j);
alert(test[0]);


Часовой пояс GMT +3, время: 02:53.