Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 07.01.2015, 19:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

igorz, так и должно быть. В массивах не бывает пропусков. Возможно вам нужен объект.
__________________
29375, 35
Ответить с цитированием
  #12 (permalink)  
Старый 07.01.2015, 22:10
Интересующийся
Отправить личное сообщение для igorz Посмотреть профиль Найти все сообщения от igorz
 
Регистрация: 19.09.2014
Сообщений: 23

рони,
Спасибо, обязательно попробую ваш пример

Aetae,
Я понимаю что в массивах не бывает пропусков. Но зачем мне массив б'ольшего размера ?
Сделал свой вариант велосипеда, вроде работает правильно:
var data = [
        ["Name", "1"],
        ["Name", "1"],
        ["Name", "2"],
        ["Name", "5"],
        ["Name", "2"]
    ];

    function sortJSONresult(param) {
        var saveFlag = 0;
        var sortedArray = new Array();
        if (param.length > 0) {
            sortedArray.push(param[0]);            
            for (var i = 1; i < param.length; i++) {
                for (var j = 0; j < sortedArray.length; j++) {                   
                    if ((param[i][1] == sortedArray[j][1]) && (saveFlag != 1)) {
                        sortedArray[j].push(param[i]);
                        saveFlag = 1;
                    } else {
                        if ((j == (sortedArray.length - 1)) && (saveFlag != 1)) {
                            sortedArray.push(param[i]);
                            saveFlag = 1;
                        }
                    }
                }
                saveFlag = 0;
            }
        }
        return sortedArray;
    }

    var srt = sortJSONresult(data);

//смотрю результат
    for (var i = 0; i < srt.length; i++) {
      console.log("i = " + i + ", " + srt[i]);
    }

//i = 0, Name,1,Name,1
//i = 1, Name,2,Name,2
//i = 2, Name,5

Но меня смущает один момент: sortedArray[i].push(param[i]) - так вообще можно делать ? Оно-то вроде работает... но после такого применения почему-то меняется первоначальный массив, который передаётся в функцию (как так ?)
//первоначальный массив меняется на такой:
i = 0, Name,1,Name,1
i = 1, Name,1
i = 2, Name,2,Name,2
i = 3, Name,5
i = 4, Name,2

//этот на вадаче из функции
i = 0, Name,1,Name,1
i = 1, Name,2,Name,2
i = 2, Name,5
Ответить с цитированием
  #13 (permalink)  
Старый 08.01.2015, 09:40
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от igorz
sql-запрос у меня сформирован так, как оно того требует:
Вы одуреете строить отношения в js-скриптах. Фактически вам придется написать свой SQL.

Люди даже так делают чтобы воспользоваться готовым: создают временную таблицу которую забивают из запросов, а потом с нее уже запрашивают еще раз. Собственно в большинстве сложных запросов драйвер так и поступает - через временную все собирает.

Короче вам правильно написали - делайте сразу такой запрос, который требуют условия. Отсортировать по мелочи, конечно можно, но не туплю (tuple);
Ответить с цитированием
  #14 (permalink)  
Старый 08.01.2015, 09:50
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от igorz
/первоначальный массив меняется на такой:
Вы херней занимаетесь. Это не сортировка и даже не группировка, а хрень какая-то. Количество столбцов не может изменяться после сортировки таблицы.

А я еще думаю почему у вас ни разу слово sort не прозвучало. Короче, прекращайте колхозить, есть научные методы сортировки многомерных (условно в js нет таких) массивов - http://stackoverflow.com/questions/3...ensional-array

Короче как вы делаете - так не бывает, это сферический конь в вакууме, так не делают.
Ответить с цитированием
  #15 (permalink)  
Старый 08.01.2015, 13:56
Интересующийся
Отправить личное сообщение для igorz Посмотреть профиль Найти все сообщения от igorz
 
Регистрация: 19.09.2014
Сообщений: 23

Сообщение от kostyanet Посмотреть сообщение
Люди даже так делают чтобы воспользоваться готовым: создают временную таблицу которую забивают из запросов, а потом с нее уже запрашивают еще раз. Собственно в большинстве сложных запросов драйвер так и поступает - через временную все собирает.
Ну ладно, когда делаешь что-то для себя, где можно смериться со всякими костылями и т.д. (это я не к тому что вы написали).
Но я логику представлял так, что
1. Сделал запрос.
2. Обработал данные не стороне клиента + дальнейшие действия.
А по вашему, выходит, что я вместо 1 запроса в бд должен буду сделать N запросов для формирования таблицы (я правильно понял ?)
И вместо, допустим, 1мс на его выполнение, буду ждать 1мс*N. Так действительно принято делать ?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос по toDataURL() GodZiLA Общие вопросы Javascript 0 03.06.2014 17:21
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Вопрос по each() и перебору строк таблицы battrack jQuery 1 09.02.2012 14:30
вопрос про возможности JS для рисования и анимации macdack Библиотеки/Тулкиты/Фреймворки 3 15.07.2011 00:13
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49