LINUX.ORG.RU

Разворачивание массива

 , дьявол в мелочах


0

1

Сочинил вот штуку

  Object.defineProperty(Array.prototype, 'lay', {
    enumerable: false,
    value: function(func, context) {
      return func.apply(context, this);
    }
  });
Короче, чтоб одной строкой
(new Date).toJSON().split('T').lay(function(el1, el2) {
  return el1.split('-').reverse().join('.') + ' ' + el2.split('.')[0];
}); // "05.08.2014 09:24:47"
Вдруг я первый придумал ^_^

Array.reduce , Array.map и т.п. в помощь. Man EcmaScript 5. И таки на все функции массива можно при вызове контекст забиндить последним параметром, если очень надо.

Не будь тряпкой, как долбодятлы из шугаржс, не расширяй нативные объекты.

Vit ★★★★★
()
Ответ на: комментарий от Vit

не расширяй нативные объекты

почему?? Уж массивы-то.

Array.reduce , Array.map и т.п. в помощь.

Тут к разным переменным надо применить разные действия, вряд ли итераторы здесь помогут. Я за производительность компактность и читаемость.

special-k ★★★
() автор топика
Ответ на: комментарий от anonymous

Чтобы, имея массив, в котором необходимо применить разные действия ко всем (или некоторым) элементам, при условии, что позиции элементов заранее известны.

Мотивация: не создавать одноразовых переменных и громоздких конструкций.

special-k ★★★
() автор топика
Ответ на: комментарий от special-k

почему?? Уж массивы-то.

Все кроме местного властелина языков будут смотреть как на чудака на букву му :)

Тут к разным переменным надо применить разные действия, вряд ли итераторы здесь помогут. Я за производительность компактность и читаемость.

Ты пытаешься из яваскрипта сделать другой язык. Это пройдет :). Забинди второй объект через контекст и юзай нативные методы, или lodash, если вопрос принципа насчет двух параметров. Или, как предалгали выше, возьми под даты готовую библиотеку. Не выделывайся :)

Vit ★★★★★
()
Ответ на: комментарий от Vit

Забинди второй объект через контекст

Какой второй?

возьми под даты готовую библиотеку

Да речь же не про даты, речь про задачу, когда параметры хранятся в массиве. Такое бывает, когда из большого массива путем преобразований (map, filter, ect..) получается маленький массив с известным количеством элементов.

var a = [n1,n2,n3,...,nm]
var t1 = a[k1],
  t2 = a[k2],
  t3 = a[k3],
...
  tp = a[kp]
<операция с одноразовыми переменными>
PROFIT

special-k ★★★
() автор топика
Ответ на: комментарий от special-k

не создавать одноразовых переменных и громоздких конструкций.

Я, вообще, не против расширения нативных объектов, но в данном случае, ИМХО, это не оправданно, в смысле, не само расширение, а способ решения задачи через дополнительный костыль, там, где все может быть решено напрямую.

;(function(){return this[0].split("-").reverse().join(".")+" "+this[1].split(".")[0]}.call((new Date).toJSON().split("T")))

anonimous
()

В принципе идея небесполезная, но я бы вместо того, чтобы засовывать такое в Array.prototype, реализовал бы это где-нибудь в моей коллекции утилит. Или добавил бы в уже существующию кооллекцию типа underscore.

Corey
()

Короче, чтоб одной строкой

ты конечно молодец, но я всё равно спрошу — а зачем нужно именно одной строкой?

в чём приемущество одной длинной строчки, относительно нескольких коротких? :-)

user_id_68054 ★★★★★
()

ТС, объясни по-проще, зачем разворачивать массив? Это типа map что-ли? :-) так, вроде, всё это есть в библиотеке Underscore, без которой ничего уже не пишут на сервер-сайде :)

menangen ★★★★★
()
Ответ на: комментарий от Vit

Ну.. нет, не подойдет, оно ж массив меняет (для того вроде и предназначено). В принципе подойдет то, что предложил вот этот товарищ Разворачивание массива (комментарий)

special-k ★★★
() автор топика
Последнее исправление: special-k (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.