Вы можете использовать lodash
для этого
var arr = ['A', 'B', 'C', 'a', 'b']
console.log(_.sortBy(arr, function (val) {
return val.toLowerCase();
}));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
Ваш пример является немного неправильным. Это должно быть:
(defclass foo ()
((data1 :initarg foo)))
Заметьте, что добавленные круглые скобки указывают на список описаний слота.
DEFCLASS берет список слотов. Таким образом с двумя слотами мы имеем:
(defclass foo ()
((data1 :initarg :data1arg
:initform (random 1.0)
:type number
:documentation "doc here"
:accessor foo-data1-acc)
(data2 :initarg :data2arg)))
DATA1 является названием слота. Позади этого Вы находите пар: значение ключевого слова.
:INITARG говорит Вам, каков параметр для ДЕЛАТЬ-ЭКЗЕМПЛЯРА. (делать-экземпляр 'нечто: data1arg 10); создает объект и устанавливает слот data1 на 10. Обычно необходимо использовать символ ключевого слова (как: data1arg здесь).
:INITFORM устанавливает слот по умолчанию, когда объект создается. Как в: (делать-экземпляр 'нечто); создает объект. Слот установлен на значение initform.
:TYPE указывает тип объекта слота.
:DOCUMENTATION является просто строкой для, ну, в общем, документации.
:ACCESSOR указывает функцию, чтобы считать и записать слот.
(foo-data1-acc some-foo-object-here) ; read
(setf (foo-data1-acc some-foo-object-here) 7) ; write
Обратите внимание, что можно записать пар в любом порядке и что можно также указать несколько функций средства доступа. Существуют также: ЧИТАТЕЛЬ и: функции УСТРОЙСТВА ЗАПИСИ.
С CLOS можно указать все это в рамках макроса DEFCLASS. Эти вещи автоматически не сгенерированы как в defstruct, который имеет более короткую нотацию.
Описание DEFCLASS здесь: DEFCLASS. Короткое Введение CLOS.
В спецификации слота общий синтаксис (имя слота [значение опции опции слота]...). По-существу-authoritatiev ссылка является страницей HyperSpec на defclass, но короче говоря:
:reader функция для чтения значения слота
:writer функция для записи значения слота
:accessor функция для и чтения и (через SETF) устанавливают значение слота
:initarg символ для устанавливания значения слота от ДЕЛАТЬ-ЭКЗЕМПЛЯРА
Существуют больше, но тот список является четырьмя, которые я главным образом использую (на самом деле, я главным образом использую: initarg и один из: средство доступа или: читатель).