Если ваша таблица является источником, и если NumberColumn имеет тип номера, это будет работать:
= Table.Group(Source, {"LetterColumn"}, {{"Column", each Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ","), type text}})
Table.Group
выполняет группу по операции, которая создает таблицу, состоящую из всех строк с одинаковым значением в LetterColumn. _[NumberColumn]
дает список значений в столбце NumberColumn в этой новой таблице. Часть List.Transform
превращает числа в текстовые значения, а Text.Combine
объединяет эти числа вместе с запятой, разделяющей каждое значение.
Если вам нужны окружающие кавычки, вы можете сделать это:
= Table.Group(Source, {"LetterColumn"}, {{"Column", each """" & Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ",") & """", type text}})
""""
представляет символ, а & amp; комбинирует два текстовых значения.
Прежде всего, var o = {};
и var o = new Array();
не совпадают. Первый инициализирует объект, второй - массив. var o = {};
и var o = new Object();
эквивалентны.
Теперь о производительности использования литерала объекта вместо добавления свойств после. Какой из них самый быстрый? Ответ: нам все равно, и вы тоже этого не должны. Если есть разница в производительности, он будет настолько мал, что он никогда не повлияет, даже если вы сразу создадите 1 миллион объектов, что вряд ли когда-либо произойдет.
Это называется преждевременной оптимизацией и является проклятием многих промежуточных программистов. Не беспокойтесь об оптимизации чего-либо, если у вас не возникнут проблемы с производительностью. Затем вы используете профилировщик, чтобы определить, где находится узкое место, и решить его. Просто подумайте о создании своего приложения.
Для полноты, здесь это тест, который я запускал на jsperf . В моем браузере Chrome 15 инициализация объектного литерала была на 53% быстрее. Ничего себе, 53%, это правда? За исключением того, что вы наводите указатель мыши на подсказку для теста, который использует свойства после инициализации, вы увидите, что он говорит что-то вроде
Ran 681 285 раз за 0.077 секунд.
blockquote >Ваши номера могут отличаться, но вы сможете заметить, что метод, который считается самым медленным, по-прежнему довольно быстро выполняется по любым стандартам. Я думаю, можно с уверенностью сказать, что оба они достаточно быстры для любой цели. Просто используйте тот, который вы предпочитаете.
Прислушайтесь к советам других о преждевременной оптимизации - не стоит сосредотачиваться на этих деталях реализации, которые, вероятно, будут сильно различаться между различными реализациями интерпретатора JavaScript.
Однако на основе этот JSPerf benchmark и размер выборки одного (в Chrome / Mac OS X), форма литерала объекта (o = {foo:'bar'}
) намного больше , чем настройка свойств после построения (o={}; o.foo='bar'
).
new Object();
. Я должен был сделать еще одно чтение по моему вопросу. Спасибо за ваш вклад. Я не хочу заботиться о производительности до такой степени, что это негативно сказывается на моем процессе разработки, но я подумал, что было бы полезно разработать привычки для эффективных альтернатив для обычных процедур. – Aejay 5 December 2011 в 22:11