вторник, 13 января 2015 г.

Функция implode для Javascript

Функция соединения массива в строчную переменную, идентична одноименной в PHP.

Функция:
function implode(glue, pieces) {
  var i = '',
    retVal = '',
    tGlue = '';
  if (arguments.length === 1) {
    pieces = glue;
    glue = '';
  }
  if (typeof pieces === 'object') {
    if (Object.prototype.toString.call(pieces) === '[object Array]') {
      return pieces.join(glue);
    }
    for (i in pieces) {
      retVal += tGlue + pieces[i];
      tGlue = glue;
    }
    return retVal;
  }
  return pieces;
}

Запуск:
implode(' ', ['Текстовая', 'переменная']);
glue - разделитель, который будет выставлен между значениями массива в созданной переменной.
pieces - массив, который будет "склеен".
Ответ: переменная "Текстовая переменная"

Функция explode для Javascript

Функция разбивания строки на массив, идентична одноименной в PHP.

Функция:
function explode(delimiter, string, limit) {
  if (arguments.length < 2 || typeof delimiter === 'undefined' || typeof string === 'undefined') return null;
  if (delimiter === '' || delimiter === false || delimiter === null) return false;
  if (typeof delimiter === 'function' || typeof delimiter === 'object' || typeof string === 'function' || typeof string === 'object') {
    return {
      0: ''
    };
  }
  if (delimiter === true) delimiter = '1';
  delimiter += '';
  string += '';
  var s = string.split(delimiter);
  if (typeof limit === 'undefined') return s;
  if (limit === 0) limit = 1;
  if (limit > 0) {
    if (limit >= s.length) return s;
    return s.slice(0, limit - 1)
      .concat([s.slice(limit - 1)
        .join(delimiter)
      ]);
  }
  if (-limit >= s.length) return [];
  s.splice(s.length + limit);
  return s;
}

Запуск:
explode(' ', 'Текстовая переменная');
delimiter - разделитель, по которому будет разбита переменная. Сам разделитель удаляется. В примере - пробел.
string - переменная, которую разбиваем
Ответ: массив {0:'Текстовая', 1:'переменная'}

Функция in_array для Javascript

Функция поиска в массиве, идентична одноименной в PHP.

Функция:
function in_array(needle, haystack, argStrict) {
  var key = '',
    strict = !! argStrict;
  if (strict) {
    for (key in haystack) {
      if (haystack[key] === needle) {
        return true;
      }
    }
  } else {
    for (key in haystack) {
      if (haystack[key] == needle) {
        return true;
      }
    }
  }
  return false;
}

Запуск:
in_array(val0, ['val1', 'val2', 'val3']);
needle - переменная, которую ищем
haystack - массив, в котором ищем
Ответы: true или false