Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.09.2016, 00:22
Интересующийся
Отправить личное сообщение для oryth Посмотреть профиль Найти все сообщения от oryth
 
Регистрация: 04.08.2014
Сообщений: 29

Оптимизация кода
Уважаемые форумчане, я 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;
			}
		}
	}
}
Ответить с цитированием
  #2 (permalink)  
Старый 11.09.2016, 00:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 27,622

oryth,
может не надо?
Ответить с цитированием
  #3 (permalink)  
Старый 11.09.2016, 00:44
Интересующийся
Отправить личное сообщение для oryth Посмотреть профиль Найти все сообщения от oryth
 
Регистрация: 04.08.2014
Сообщений: 29

почему не надо? так можно его оптимизировать?
Ответить с цитированием
  #4 (permalink)  
Старый 11.09.2016, 00:46
Интересующийся
Отправить личное сообщение для oryth Посмотреть профиль Найти все сообщения от oryth
 
Регистрация: 04.08.2014
Сообщений: 29

можно ли сделать чтобы был один или два if внутри цикла?
Ответить с цитированием
  #5 (permalink)  
Старый 11.09.2016, 01:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 27,622

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)
});
Ответить с цитированием
  #6 (permalink)  
Старый 11.09.2016, 01:20
Интересующийся
Отправить личное сообщение для oryth Посмотреть профиль Найти все сообщения от oryth
 
Регистрация: 04.08.2014
Сообщений: 29

рони,
спасибо большое
Ответить с цитированием
  #7 (permalink)  
Старый 11.09.2016, 02:00
Интересующийся
Отправить личное сообщение для oryth Посмотреть профиль Найти все сообщения от oryth
 
Регистрация: 04.08.2014
Сообщений: 29

рони,
отлично, почитал про every и call, на подобие (с другими условиями и ) заменил в другом месте. Еще раз большое спасибо
Ответить с цитированием
  #8 (permalink)  
Старый 31.08.2019, 19:04
Новичок на форуме
Отправить личное сообщение для Miha-78 Посмотреть профиль Найти все сообщения от Miha-78
 
Регистрация: 31.08.2019
Сообщений: 3

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

Только начал изучать 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);

Последний раз редактировалось Miha-78, 31.08.2019 в 19:16.
Ответить с цитированием
  #9 (permalink)  
Старый 31.08.2019, 19:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 27,622

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);
Ответить с цитированием
  #10 (permalink)  
Старый 31.08.2019, 20:04
Новичок на форуме
Отправить личное сообщение для Miha-78 Посмотреть профиль Найти все сообщения от Miha-78
 
Регистрация: 31.08.2019
Сообщений: 3

Большое спасибо!
Попытавшись проанализировать ваш код я понял, что вы пошли путем создания объекта, но дойдя до строки 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);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода Nifler jQuery 6 30.09.2013 21:14
Оптимизация кода assd18 Общие вопросы Javascript 4 21.06.2013 15:26
Оптимизация кода Prizrak177 Общие вопросы Javascript 0 15.02.2011 16:36
Помогите пожалуйста. Оптимизация кода. touch_the_sky Элементы интерфейса 21 18.06.2009 19:53
Помогите пожалуйста. Оптимизация кода. touch_the_sky Events/DOM/Window 0 17.06.2009 14:52