Работа с массивами Javascript: есть ли лучший способ сделать следующее? - PullRequest
3 голосов
/ 13 апреля 2011

У меня есть следующий код:

  1. Извлекает текст из элемента на странице
  2. Фильтры для конкретного элемента
  3. Разделяет '\ n'
  4. Удаляет все элементы массива, которые являются пробелами

Кажется, это занимает немного больше времени, чем мне бы хотелось, и не удаляет все заполненные пробелами элементы массива, как вы могли бы ожидать.

Просто для справки, я затем объединяю два массива в один и загружаю скрипты и стили, используя YepNope. Этот процесс занимает около 1,5 с, что очень долго для пользователя.

Как я могу улучшить скорость этого?

var $containerHtml = $(html);

    // Add the scripts
    scriptArray = $.grep($containerHtml.filter('#includeScripts').text().split('\n'), function (element, index) {
                    return element !== "" && element !== " ";
                });
    // Add the styles
    styleArray = $.grep($containerHtml.filter('#includeStylesheets').text().split('\n'), function (element, index) {
                    return element !== "" && element !== " ";
                });

    // Combine the two arrays into 1
    combinedArrays = scriptArray.concat(styleArray);

    // Load the scripts and styles 
    yepnope([{
        load: combinedArrays,
        callback: function (url, result, key) {
                if (window.console && window.console.firebug) {
                    console.log("Loaded " + url);
                }
        }}]);

1 Ответ

2 голосов
/ 13 апреля 2011

Почему у вас есть сценарии в виде текстовых массивов на вашей HTML-странице?

Я бы сохранил их как .json файлы на сервере.

$.when($.getJSON("url/script.json"), $.getJSON("url/stylesheet.json")).then(function(script, style) {
    var arr = ...; // combine script & style. 
    yepnope(...);
});

Если выЕсли вы хотите, чтобы они были статическими, настройте некоторые JSON-файлы маршрутизации и сервера на основе входящего URL.

...