2014-10-02 2 views
0

Какое наименьшее количество кода необходимо выполнить следующие действия:объект Javascript обнаружения собственности

Если объект существует и имеет требуемое свойство и свойство не является пустой строкой, то установить переменную в значение свойство else устанавливает переменную в строку по умолчанию.

Предполагая, что переменная объекта может быть неопределенной или действительным объектом, она никогда не может быть функцией, нулем, строкой или чем-либо еще. Также, если объект имеет требуемое свойство, это строка и никогда ничего.

Решение этой проблемы может быть:

// obj is the object we are testing, prop is the name of the property, def is the default string 

var result = def; 
if (obj && obj[prop] && obj[prop].length) { 
    result = obj[prop]; 
} 

ли это совершенно правильно, я не уверен.

Но есть ли более короткий путь?

Спасибо,

AJ

+2

Вот как я это сделаю. Это читаемо и делает то, что вы намерены. – kinakuta

+0

Поскольку этот вопрос о том, чтобы оптимизировать рабочий код, я отметил его для перехода на [CodeReview.SE]. – Scimonster

ответ

2

Если вы хотите, чтобы сократить его, вы можете написать:

result = (obj && obj[prop]) || def; 

пустая строка falsy, так что вам не нужно, чтобы проверить длину явно ,

result = <val> || <default>; 

является распространенной идиомой для установки переменной в значение со значением по умолчанию, если значение равно null.

+0

Я не знал, что пустая строка была ложной, что на самом деле очень полезно. благодаря –

Смежные вопросы