Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Оптимизация кода (https://javascript.ru/forum/project/64872-optimizaciya-koda.html)

oryth 10.09.2016 23:22

Оптимизация кода
 
Уважаемые форумчане, я JavaScript плохо знаю, помогите оптимизировать участок кода:
err='';
var elems = document.querySelectorAll('[data-text]');
for (var i=0; i < elems.length;i++){
	if  (elems[i].hasAttribute('required')){
		if (elems[i].getAttribute('type') == 'checkbox'){
			if (elems[i].checked == false){
				err = elems[i].dataset.text;
				break;
			}
		}else{	
			if (elems[i].value == ''){
				err = elems[i].dataset.text;
				break;
			}
		}
	}
}

рони 10.09.2016 23:41

oryth,
может не надо?

oryth 10.09.2016 23:44

почему не надо? так можно его оптимизировать?

oryth 10.09.2016 23:46

можно ли сделать чтобы был один или два if внутри цикла?

рони 11.09.2016 00:05

oryth,
err = "";
[].every.call(document.querySelectorAll("[data-text][required]"), function(a) {
    return a.checked && "checkbox" == a.type || a.value && "checkbox" != a.type || !(err = a.dataset.text)
});

oryth 11.09.2016 00:20

рони,
спасибо большое

oryth 11.09.2016 01:00

рони,
отлично, почитал про every и call, на подобие (с другими условиями и ) заменил в другом месте. Еще раз большое спасибо

Miha-78 31.08.2019 18:04

Доброго времени суток!

Только начал изучать JS. В книге была дана такая задачка:

Нужно было найти определенные буквы в тексте и заменить их на цифры с помощью цикла for.
Можно ли написать этот код короче и как?

var input = "javascript is awesome";
var output = "";
for (var i = 0; i < input.length; i++){

var outputSign = input[i];

if (outputSign == "a"){
output += 4;
} else if (outputSign == "e"){
output += 3;
} else if (outputSign == "i"){
output += 1;
} else if (outputSign == "o"){
output += 0;
} else {
output += outputSign;
};
};
document.write(output);

рони 31.08.2019 18:17

Miha-78,
var obj = {a : 7, b : 12, c : 38}, str = "aaccddcc";
str = str.replace(/([abc])/g, function(a, b) {
    return  b in obj ? obj[b] : b
})
alert(str);

Miha-78 31.08.2019 19:04

Большое спасибо!
Попытавшись проанализировать ваш код я понял, что вы пошли путем создания объекта, но дойдя до строки 5 там где открывается скобка (, понимать стало труднее ).
Строка 4 это вы создали переменную я правильно понял?

1. var obj = {
2. a : 7,
3. b : 12,
4. c : 38
},
4. str = "aaccddcc";
5. str = str.replace(/([abc])/g, function(a, b) {
return b in obj ? obj[b] :b
})

alert(str);


Часовой пояс GMT +3, время: 09:57.