Подтвердить что ты не робот

Как сгенерировать массив алфавита в jQuery?

В Ruby я могу сделать ('a'..'z').to_a и получить ['a', 'b', 'c', 'd', ... 'z'].

Предоставляет ли jQuery или Javascript аналогичную конструкцию?

4b9b3361

Ответ 1

Вы можете легко сделать функцию, чтобы сделать это для вас, если вам это понадобится.

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"]

Ответ 2

Лично я считаю, что лучше всего:

alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');

Краткий, эффективный, понятный и простой!

EDIT: Я решил, что, поскольку мой ответ получает достаточное количество внимания, чтобы добавить функциональность, чтобы выбрать конкретные диапазоны букв.

function to_a(c1 = 'a', c2 = 'z') {
    a = 'abcdefghijklmnopqrstuvwxyz'.split('');
    return (a.slice(a.indexOf(c1), a.indexOf(c2) + 1)); 
}

Ответ 3

new Array( 26 ).fill( 1 ).map( ( _, i ) => String.fromCharCode( 65 + i ) );

Используйте 97 вместо 65, чтобы получить строчные буквы.

Ответ 4

В случае, если кто-то пришел сюда искать что-то, что они могут жестко запрограммировать, вот вам:

["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"]

Ответ 5

Короткая версия ES6:

const alphabet = [...'abcdefghijklmnopqrstuvwxyz']

Ответ 6

Используя оператор распространения ES6, вы можете сделать что-то вроде этого:

let alphabet = [...Array(26).keys()].map(i => String.fromCharCode(i + 97));

Ответ 7

Я видел ответ, который я любил выше, который был жестко закодированным списком английских алфавитов, но он был только в нижнем регистре, и мне также требовался верхний регистр, поэтому я решил изменить его на тот случай, если кому-то еще это понадобится:

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"];

Ответ 8

Многие из этих ответов либо используют массив символов, либо String.fromCharCode, я предлагаю несколько иной метод, который использует буквы в base36:

[...Array(26)].map((e,i)=>(i+10).toString(36))

Преимуществом этого является чисто гольф-код, он использует меньше символов, чем другие.

Ответ 9

Нет Javascript или Jquery не предоставляет ничего подобного. Вы должны создать свой собственный массив.

Вы можете попробовать следующее:

var alpha = ["a","b","c",....];

или лучше попробуйте вот так:

var index = 97;
$("#parent .number").each(function(i) {
    $(this).html(String.fromCharCode(index++));
});

DEMO

Ответ 10

Использование синтаксиса 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));

Ответ 11

в случае, если вам нужен жестко запрограммированный 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"] */