В Ruby я могу сделать ('a'..'z').to_a
и получить ['a', 'b', 'c', 'd', ... 'z']
.
Предоставляет ли jQuery или Javascript аналогичную конструкцию?
В Ruby я могу сделать ('a'..'z').to_a
и получить ['a', 'b', 'c', 'd', ... 'z']
.
Предоставляет ли jQuery или Javascript аналогичную конструкцию?
Вы можете легко сделать функцию, чтобы сделать это для вас, если вам это понадобится.
function genCharArray(charA, charZ) {
var a = [], i = charA.charCodeAt(0), j = charZ.charCodeAt(0);
for (; i <= j; ++i) {
a.push(String.fromCharCode(i));
}
return a;
}
genCharArray('a', 'z'); // ["a", ..., "z"]
Лично я считаю, что лучше всего:
alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
Краткий, эффективный, понятный и простой!
EDIT: Я решил, что, поскольку мой ответ получает достаточное количество внимания, чтобы добавить функциональность, чтобы выбрать конкретные диапазоны букв.
function to_a(c1 = 'a', c2 = 'z') {
a = 'abcdefghijklmnopqrstuvwxyz'.split('');
return (a.slice(a.indexOf(c1), a.indexOf(c2) + 1));
}
new Array( 26 ).fill( 1 ).map( ( _, i ) => String.fromCharCode( 65 + i ) );
Используйте 97 вместо 65, чтобы получить строчные буквы.
В случае, если кто-то пришел сюда искать что-то, что они могут жестко запрограммировать, вот вам:
["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
Короткая версия ES6:
const alphabet = [...'abcdefghijklmnopqrstuvwxyz']
Используя оператор распространения ES6, вы можете сделать что-то вроде этого:
let alphabet = [...Array(26).keys()].map(i => String.fromCharCode(i + 97));
Я видел ответ, который я любил выше, который был жестко закодированным списком английских алфавитов, но он был только в нижнем регистре, и мне также требовался верхний регистр, поэтому я решил изменить его на тот случай, если кому-то еще это понадобится:
const lowerAlph = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
const upperCaseAlp = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
Многие из этих ответов либо используют массив символов, либо String.fromCharCode
, я предлагаю несколько иной метод, который использует буквы в base36:
[...Array(26)].map((e,i)=>(i+10).toString(36))
Преимуществом этого является чисто гольф-код, он использует меньше символов, чем другие.
Нет Javascript или Jquery не предоставляет ничего подобного. Вы должны создать свой собственный массив.
Вы можете попробовать следующее:
var alpha = ["a","b","c",....];
или лучше попробуйте вот так:
var index = 97;
$("#parent .number").each(function(i) {
$(this).html(String.fromCharCode(index++));
});
Использование синтаксиса JavaScript Array.from позволяет создавать массив и выполнять функцию сопоставления для каждого из элементов массива. Создайте новый массив длиной 26 и на каждом элементе установите значение, равное строке, полученной из кода char индекса текущего элемента плюс магическое число ascii.
const alphabet = Array.from(Array(26), (e, i) => String.fromCharCode(i + 97));
Опять же, 97 может быть заменен на 65 для прописного алфавита.
Массив также может быть инициализирован значениями с использованием метода объектных ключей, а не с использованием индекса карты
const alphabet = Array.from(Array(26).keys(), i => String.fromCharCode(i + 97));
в случае, если вам нужен жестко запрограммированный array
алфавита, но с меньшим набором текста. альтернативное решение того, что упомянуто выше.
var arr = "abcdefghijklmnopqrstuvwxyz".split("");
выведет массив, как это
/* ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m","n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] */