Работает для массивов / массивов внутри объекта. Защита от недопустимых значений.
/**
* Retrieve nested item from object/array
* @param {Object|Array} obj
* @param {String} path dot separated
* @param {*} def default value ( if result undefined )
* @returns {*}
*/
function path(obj, path, def){
var i, len;
for(i = 0,path = path.split('.'), len = path.length; i < len; i++){
if(!obj || typeof obj !== 'object') return def;
obj = obj[path[i]];
}
if(obj === undefined) return def;
return obj;
}
//////////////////////////
// TEST //
//////////////////////////
var arr = [true, {'sp ace': true}, true]
var obj = {
'sp ace': true,
arr: arr,
nested: {'dotted.str.ing': true},
arr3: arr
}
shouldThrow(`path(obj, "arr.0")`);
shouldBeDefined(`path(obj, "arr[0]")`);
shouldBeEqualToNumber(`path(obj, "arr.length")`, 3);
shouldBeTrue(`path(obj, "sp ace")`);
shouldBeEqualToString(`path(obj, "none.existed.prop", "fallback")`, "fallback");
shouldBeTrue(`path(obj, "nested['dotted.str.ing'])`);
<script src="https://cdn.rawgit.com/coderek/e7b30bac7634a50ad8fd/raw/174b6634c8f57aa8aac0716c5b7b2a7098e03584/js-test.js"></script>
Спасибо за тех, кто предложил Resharper. Дает мне еще одну причину любить его еще больше. Просто чтобы уточнить, где это происходит - JetBrains называют это CamelHumps (милый), и вы можете включить его, используя меню:
Resharper -> Options -> Environment -> Редактор -> Поведение редактора -> Использование CamelHumps
blockquote>... в старых версиях Resharper, это:
Resharper -> Options -> Редактор -> Использование CamelHumps
blockquote>
По состоянию на июнь 2018 года (версия 1.25) VS Code поддерживает это изначально! Он упоминался в примечаниях к выпуску . Это относится к как к CamelCase, так и к snake_case.
Чтобы включить эту опцию, перейдите в «Клавиши быстрого доступа», либо в строке меню (Файл → Настройки → Клавиши быстрого доступа), либо используя сочетание клавиш (CtrlK и CtrlS).
Что вам нужно сделать, это установить следующее:
cursorWordPartLeft
cursorWordPartLeftSelect
cursorWordPartRight
cursorWordPartRightSelect
По умолчанию они установлены в CtrlAltLeft / Right Arrow и CtrlShiftAltLeft / Right Arrow. Если это не то, что вы хотите, вы можете изменить их, щелкнув значок редактирования или дважды щелкнув имя команды.
Хотя вам не нужно устанавливать эти команды (они равны по умолчанию), при этом им не нужно нажать Alt, чтобы вы могли использовать их, не задумываясь, хотите ли вы этого или нет.
Если у вас установлен ReSharper, вы также можете настроить быстрые клавиши быстрого доступа Visual Studio «Alt-Right» и «Alt-Left» для CamelHump, не теряя стандартного поведения Visual Studio для «ctrl-right» и «ctrl-left».
Подробности здесь: http://davidrcook.wordpress.com/2009/11/05/working-with-camel-case-in-visual-studio/
Я не думаю, что Visual Studio поддерживает эту функцию внутренне, поскольку она, кажется, использует обычный способ Ctrl + Right и Ctrl + Left работать в среде Windows. Но это, вероятно, возможно с каким-то расширением или плагином.
Resharper делает это. Я полагаю, вы могли бы написать свой собственный addin, чтобы сделать то же самое.
Добавьте макрос ниже в визуальную студию.
http://visualstudiomacros.blogspot.com/2008/03/getting-ctrl-right-arrow-to-respect.html
Функция Resharper поддерживает эту функцию.
Любой, кто сталкивается с этим в 2015 году или за его пределами (кто не хочет платить за ReSharper или CodeRush , который больше не имеет бесплатной версии ), следующее бесплатное расширение добавляет эту функцию: Подслововая навигация
(В качестве альтернативы расширение VSTricks включает в себя подслововую навигацию в своем списке отличных функций.)
Подслово На странице состояния навигационного проекта:
Посмотрите Edit.Subword в привязках к клавиатуре, чтобы установить настройки.
blockquote>Вот как я установил его в Visual Studio 2012:
- Перейдите в меню «Сервис»> «Параметры»> «Среда»> «Клавиатура»
- В разделе «Показать команды, содержащие» введите Edit.Subword
- Для перемещения на верблюдах вправо Выберите Edit.SubwordNext В разделе «Использовать новый ярлык в» выберите «Текстовый редактор» в разделе «Нажмите сочетания клавиш», нажмите ALT + Стрелка вправо Нажмите «Назначить» и перезаписать существующий ярлык (сначала перепишите существующий ярлык, если вы Не хочу терять shortcut)
- Для перемещения на верблюдах влево Выберите Edit.SubwordPrevious В разделе «Использовать новый ярлык в» выберите «Текстовый редактор» в разделе «Нажмите сочетания клавиш», нажмите ALT + Стрелка влево Нажмите Назначьте и перезапишите существующий ярлык (сначала переименуйте существующий ярлык, если вы не хотите потерять этот ярлык)
- Для выбора верблюжьих правых Выберите Edit.SubwordNextExtend В разделе «Использование новый ярлык в ", выберите« Текстовый редактор »в разделе« Нажмите сочетания клавиш », нажмите ALT + SHIFT + Стрелка вправо Нажмите« Назначить и перезаписать существующий ярлык »(сначала переименуйте существующий ярлык, если вы не хотите потерять этот ярлык)
- Для выбора верблюдов слева Выберите Edit.SubwordPreviousExtend В разделе «Использовать новый ярлык в» выберите «Текстовый редактор» в разделе «Нажмите клавиши быстрого доступа», нажмите ALT + SHIFT + Стрелка влево Нажмите «Назначить и перезаписать» существующий ярлык (сначала переназначить существующий ярлык, если вы не хотите потерять этот ярлык)
- Для удаление верблюжьей стрелки вправо Выберите Edit.SubwordDeleteNext В разделе «Использовать новый ярлык в» выберите «Текстовый редактор» в разделе «Нажмите клавиши быстрого доступа», нажмите ALT + DELETE. Нажмите «Назначить» и перезапишите существующий ярлык (сначала переназначьте существующий ярлык, если вы не хотите потерять этот ярлык)
- Для удаления верблюдов слева Выберите Edit.SubwordDeletePrevious В разделе «Использовать новый ярлык в» выберите «Текстовый редактор» в разделе «Нажмите сочетания клавиш», , нажмите ALT + BACKSPACE Нажмите «Назначить и перезаписать существующий ярлык» (сначала переименуйте существующий ярлык, если вы не хотите потерять этот ярлык)
Visual Studio не поддерживает это поведение. Однако, DevExpres's CodeRush! продукт поддерживает навигацию как это (с помощью Alt-Left & amp; Alt-Right), а также множество других функций для навигации. CodeRush! продукт также поставляется вместе с инструментом Refactor. Они также предлагают бесплатный CodeRush! & Амп; Refactor Express, хотя я не уверен, что навигация Camel Casing является частью экспресс-продукта.
Это не является родным для Visual Studio, но вы можете получить его бесплатно, используя CodeRush Express . (ReSharper и CodeRush требуют оплаты).