2015-08-11 3 views
1

Я хочу построить свою базу объектов data по моим параметрам url.Как узнать, когда использовать оператор if или switch?

var $data = {}; 

if(params.assessmentId !== undefined){ 
    $data.assessmentId = params.assessmentId; 
} 
if(params.classroomId !== undefined){ 
    $data.classroomId = params.classroomId; 
} 
if(params.studentId !== undefined){ 
    $data.studentId = params.studentId; 
} 
if(params.courseContentId !== undefined){ 
    $data.courseContentId = params.courseContentId; 
} 

console.log($data); 

Я хочу проверить, существуют ли они в первую очередь, а затем установить его соответствующим образом.

У меня есть достаточно хорошо?

Должен ли я использовать оператор switch?

+1

Интересует это сам .. интересуется ответами. Спасибо за вопрос! – Daan

+1

Не используйте переключатель для этого – loli

+0

У вас есть свои причины и вы хотите поделиться? – ihue

ответ

4

У меня есть достаточно хорошо?

Да.

Если вы хотите его сократить, используйте цикл над ожидаемыми именами свойств.

Следует ли вместо этого использовать инструкцию switch?

№ A switch заявление имеет совершенно другую цель.

2

Заявление о переключении на самом деле не работает в вашей ситуации, потому что вы продолжаете изучать разные ключи. Коммутатор работает на одно значение, так что вы можете использовать его, чтобы делать разные вещи, основываясь на значении courseContentId:

switch(params.courseContentId) { 
    case undefined: 
     code block 
     break; 
    case 10: 
     code block 
     break; 
    default: 
     default code block 
} 
2

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

var $data = {}; 
var params = {}; 
params.assessmentId = 11; 

for (var n in params) { 
    $data[n] = params[n] 
} 
console.log($data); 

вы только копировать значения из одного объекта к другому, так что вы можете просто цикл над ним и вашим $data объекта будет принимать только значение, установленное в params.

1

В представленном вами примере вам фактически не нужны инструкции if. Просто назначьте свойства данных, как вы делаете. Если что-то в параметрах не определено, оно не будет отражать ваш объект данных.

PS. Заявление о переключении никоим образом не поможет. Оператор switch используется для отделения вашего кода в зависимости от нескольких возможных значений переменной SAME. Не разные.

1

Если у вас есть только это количество случаев, тогда это выглядит нормально! но если у вас есть много условий для проверки, тогда у вас будет чек, переход к следующему предложению, проверка, переход к следующему предложению и так далее.

С другой стороны, с помощью «переключателя» JVM загружает значение для сравнения и выполняет итерацию через таблицу значений, чтобы найти совпадение, которое в большинстве случаев выполняется быстрее.

Примечание. Оператор switch не всегда быстрее, чем оператор if. Он масштабируется лучше, чем длинный список операторов if-else, поскольку коммутатор может выполнять поиск по всем значениям. Однако для короткого условия он не будет быстрее и может быть медленнее.

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