Pull to refresh
-8
0

(Only reading => Paused => Welcome)

Send message
Проверка длинны 'a.length < b', намного быстрей чем 'a.length' + 'Math.max' + 'Array.join'
function pading(a, b, с) {
  return (b+=1,a.length < b ? (Array(b).join(c) + a).substr(-1*b): a);
}

Но в целом, для решении любой задачи существует два варианта, либо что-то делать для ее решения либо нет.
А программист добавит, пока все работает, ничего не меняй ;)
function pading(a, b, с) {
  return a.length < b ? (Array(b).join(c) + a).substr(-1*b): a;
}

Я наверное не правильно, выражаюсь, все мои примеры только импровизация на коленке, для подтверждения возможностей JavaScript.
И любую задачу при желании можно описать одной строкой — если понимаю как, когда не понимаю ищу пример модуль или функцию изучаю, и если целесообразно добавляю фрагмент или вызов.
Спасибо
Теперь понятней, полностью с вами согласен
что на самом деле эти строки — это кусочек знания (о массивах, об исключительных случаях, и т.д.)

Хотя, так можно оборачивать и команду print.

P.S. Когда то увидел, как на asm двумя байтами перезагрузить комп. не поленился сохранил как инклюд, чтоб не забыть, хотя и глупо это выглядело.

Что то не так, вопрос не в варианте,
 function pading(a, b, с) {
  return (Array(b).join(c) + a).substr(-1*b);
 }

Написание модуля — функции, дает понимание законченности.
Дробление своей задачи на модули — функции, общее представление алгоритма.
Модули удобно использовать для демонстраций и изучения.
Но когда доходит до оптимизации ...;)
Это как в жизни, чем меньше зависимостей, тем легче дышится.

И т.д и т.п.


зачем писать обертку для того, что есть и/или пишется одной строкой.
Спасибо
Спасибо, за внимание, не понял вашего совета.
function isArray(a){
 return !!(a && a.constructor === Array);
}

где и что вы предлагаете дописать,
и что делать регуляркой, возможно вы не мне.
А если так,
function pading(a, b, c) {
 return Array(b).join(c) + a;
}

Но это не принципиально, здесь пишу, как функцию только для понимания,
хота сам использую только
var str+=Array(2).join("0");

или
var str=Array(2).join("0") + str;

Модули и лоадеры удобно использовать только на этапе наброска.
А на этапе тестирования, отладки и оптимизации обычно стараюсь избавиться от зависимостей.
Но это не означает, что я их не использую.
Извините, наверное мы говорим о разном, в стандартных ситуациях хватает и запроса к свойству 'constructor'
В не стандартных ситуациях, для получения значения 'class' тоже использую '{}.toString.call()':
function getTypeOf(a) {
 return (void 0 === a || null === a ? String(a) : {}.toString.call(a).replace(/\[.+?(\w+)\]/, '$1').toLowerCase()) || '';
}

Но сути дела это не меняет:
зачем писать обертку для того, что есть и/или пишется одной строкой.
Извиняюсь забыл сказать о последней проверке:
==> 5 // Небольшой факт: Array.prototype сам является массивом:
Возможно, но первые четыре true, а остальные false, просто не boolean, но false.
А если нужно boolean, хотя это и не имеет смысла, допишите:
function isArray(a){
 return a && !!(a.constructor === Array);
}
Доброго времени суток
Некогда не понимал зачем писать обертку для того, что есть и/или пишется одной строкой.
На мой взгляд подобный код не имеет смысла оборачивать в функции.
function isArray(a){
 return a && a.constructor === Array;
}

function pading(a, b) {
 return Array(b).join(" ") + a;
}
Спасибо
Спасибо за ваше мнение.
Посмотрел я как на сайтах после расчетов проверяют номиналы.
А насчет известных таблиц, собственно… ;)
Кто-то же мне за скрипт заплатил?
Я тоже инженер, если что =)
Ну, а в скрипт весь гост добавлять, было как-то не рационально.

Спасибо
Keyten
Если не секрет, зачем всё сообщение писать в спойлере?

В спойлере, чтоб не захламлять топик, и ответы были за вопросами.

var first = 0;   // Предположим, что эта переменная действительно 'first'
                 // со значением типа Number
// ...           // здесь что-то происходит возможно, что с 'first'
first = 'abc';   // Меняем тип переменной, и она уже не может быть 'first' скорее 'tmp'
                 // Это и есть разрыв логической привязки.
alert(first);    // Я бы сразу написал alert('abc');
// Не удачный пример, я бы выбрал, что то об обмене значений переменных, и описал бы классический стек.
//
// В моем понимании оптимизация это разумное соотношение размера кода к количеству 
// выполненных операций для получения определенной цели. Я стараюсь не использовать 
// переменных, которые использоваться однократно, проще интегрировать эти значения в код. 
// После того как понимаешь что все переменные на своих местах, начинаю разбираться, а все 
// ли переменные и операции мне нужны - это как упростить уравнение, если упрощать нечего, 
// начинаю сортировать переменные в порядке использования, а последним шагом сокращаю имена 
// переменных и функций.
//
// Постарался полно ответить на ваши вопросы.

Спасибо
Согласен с вами.
Не привязывал переменные логически к названию, чтоб не терять возможности повторного использования.
К именованию переменных у меня БЫЛО два подхода.
  • При изучения чужого кода и отладке собственного — использую маркеры из "$", "_" и буквы верхнего регистра.

var $A="Marker'$A'";
var _A="Marker'_A'";
var _$A="Marker'_$A'";

  • При оптимизации кода — минимальное имя переменной и отсутствие логической привязки названия к значению для временных %TMP% переменных, и их логическая последовательность

Спасибо
== > Начните отсюда:
Как раз сейчас пытаюсь осмыслить.

== > (вопросы сюда в лс)
Я так понимаю
package.json:
{
«name»: «translit»,
«version»: «0.0.4»,
«description»: «Forward and reverse transliteration according to ISO 9 or ISO 9: 1995 or GOST 7.79-2000 system of A and B»,
«main»: «translit.js»,
«scripts»: {
«test»: "??? — пока не понимаю что туда"
},
«author»: «xguest <xguest@list.ru>»,
«license»: «GPL»
}
Спасибо
Нет для тех задач, что решают в ASM, память стараются экономить.
Завтра переименую переменные.
Спасибо
1) Ну тогда, стоит начать сначала, JavaScript считаю наименее мной изученным языком, да и себя не позиционирую как программиста скорей как сисадмина, но просмотрев избранное своего браузера оказалось, что по MASM, C++, C#, JS, VBS, VB, Linux, железу и т.д. и т.п больше всего ссылок на Хабрахабр.
Почитав хабр и учитывая свои возможности, решил быть хоть чем то полезным, это и была задача.

2) C npm столкнулся только в Node и то для изучения чужого кода. Придется почитать.

Ощущение как у школьника, но буду стараться.
Спасибо, за советы это уже похоже на дискуссию.

k12th Спасибо, С JSDoc пока разбираюсь.

Прокомментировал код, как смог.

Прошу сильно не пинать, это моя первая публикация, и я стараюсь.

Хочу переименовать переменные.

Не привязывал их логически к названию, чтоб не терять возможности повторного использования.

У меня вопрос, а если вы в середине кода понимаете, что переменная больше не нужна, разве ее нельзя использовать повторно?

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

1) Насчет проголосовавших, я хотел сказать, что не зависимо от голосования, кто то посчитал его для себя полезным.

2) О простоте кода — это уже философия, считаю в лесу проще заблудится, чем в трех деревьях. Сложный? чем — повторным использованием переменных, отсутствием лишних
проверок, но согласен кое что в коде проработать можно. Мой папа тоже всегда упоминал о своем возрасте и опыте, а когда мне исполнилось примерно столько же, понял, что тогда нужно было согласится независимо от того прав он был или нет. Говорят, это наживное, возможно кому-то и лога отладчика хватает и я им завидую.

3) Насчет вкусов вы по моему передёрнули, или не поняли я имел ввиду, что говорю о функции, а не о том где ее использовать.

4) Насчет, зачем выкладывал, искал более простой вариант, наверное хотел выслушать чье то мнение, я уже пообещал прокомментировать. Может укажите стандарт?

5) Об оптимизации и минимизации, для этого и писал искал более оптимальный вариант, о чем и написано в шапке.

6) ==> Но у вас дело даже не в алгоритме \n RegExp(e.join("|")
А что вас здесь смущает, преобразовать массив в строку с разделителем "|", что в свою очередь для RegExp является символом или. Кстати вы писали почему не выровнены имена переменных по алфавиту, и как раз про 'e' она там внешняя, и при совмещении двух рядов с учетом видимости и алфавита она вышла буквой 'e'.

7) ==> Все пред-созданные регулярки браузер компилит заранее и потом просто переиспользует.

Насколько я помню добиться увеличения скорости можно кэшируя большие данные, мой же код имея в ГОСТ восемь полей и 14 вариантов таблиц не кэширует ничего просто проверяет направление и создает таблицу и RegExp. И это как раз то что хотелось оптимизировать но там только одна проверка, сомневаюсь но думаю что заранее создавать все регулярки уже будет накладно.

8) ==> Почему a — символ,…
а — потому что это единственная локальная переменная в этой функции.
все остальные переменные для нее внешние.

9) ==> А то, что код не пишется в одну строчку.
Тут мой косяк, уже сказал исправлюсь, эти функции пощипал не интересными, и свернул но в принципе то там ни чего и нет.
Еще раз спасибо.
Спасибо
Насчет оформления исправлюсь.
Задача и была написать оптимизированный по времени и размеру код для транслитерации по стандарту.
Можно положить и на Git но я предполагал что код и его оптимизация и есть тема обсуждения.
Насчет NPM, я не использовал в функции сторонний код поэтому так и оставил, код под ECMA 3,
а если писать под 'нод' или что то еще можно было бы использовать 'Object.keys' и тому подобное я же старался придерживаться ECMA, да и еще, а как быть Googl и mozilla SDK.
Спасибо
+) Чтоб хранить в базе данных весь код.
+)
Если взять в пример какой-нибудь numeral, вполне можно выделить таблицы локализации в отдельный файл. (что приведет к большей поддерживаемости и возможности заюзать, например, по выбору ГОСТ или ISO)

Удалите и не используйте македонский (поддержка стандарта) и код это не затронет, таблица кодов в одной переменной используйте хоть с другого сервера и кстати код уже поддерживает выбору ГОСТ и ISO

Information

Rating
Does not participate
Registered
Activity

Specialization

Системный администратор