 
			
				09.07.2017, 22:02
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.07.2017 
					
					
					
						Сообщений: 49
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Проверка наличия в обьекте свойства, прочитанного из prompt
			 
			
		
		
		
		есть вот такая задача: 
 
Создайте ассоциативный массив person, описывающий персону, с произвольным количеством произвольных полей. С помощью оператора in или typeof проверьте наличие в объекте свойства, прочитанного из prompt, и выведите его на экран. Если свойства нет, то добавляйте его в объект со значением, которое также запрашивается из prompt. 
 
Ассоциативный массив создала: 
var person={ 
	 
	name:"John", 
	age:"26", 
	salary:"1000$", 
} 
 
Не понимаю как сделать дальше. Помогите и обьясните 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.07.2017, 23:45
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.01.2015 
					
					
					
						Сообщений: 622
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<div>
  Джон
</div>
<button id="spp">Показать свойство пользователя</button>
<script>
var person= {
  name:"John",
  age:"26",
  salary:"1000$",
}
document.querySelector('#spp').addEventListener('click', function() {
	var property = prompt('Введите нужное Вам свойство');
  if (property in person) { // typeof person[property] !== 'undefined'
  	alert(person[property]);
  } else {
  	person[property] = prompt('Такого свойства еще нет. Укажите значения свойства ' + property + ' у Джона');
        alert('Свойство ' + property + ' установлено в значение ' + person[property] + ' у Джона.');
  }
});
</script>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось EmperioAf, 09.07.2017 в 23:48.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.07.2017, 23:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.07.2017 
					
					
					
						Сообщений: 49
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 спасибо) 
Уже решила также)) 
 
Но есть другой вопрос,по другой задачке 
 
Создайте смешанный массив, например [1, 2, 3, 'a', 'b', 'c', '4', '5', '6']. Посчитайте сумму всех его чисел, включая строковые числа, исключая буквы. Выведите сумму в alert. 
 
как можно посчитать эти числа со строками,не учитиваю буквы? 
 
Учу JS только 3-ю неделю. есть моменты,которые не доходят как сделать) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.07.2017, 00:28
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.01.2015 
					
					
					
						Сообщений: 622
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
function isNumeric(value) { // ф-ия возвращает true или false, в зависимости от входящего значения, если аргумент приводится к числу, то true, иначе false
    var num = Number(value); // приводим к числу, Number('5') === 5
    return !Number.isNaN(num) && // Number('abs') is NaN
              Number.isFinite(num) && // num !== Infinity && num !== -Infinity
              value.constructor !== Array; // если входящий параметр массив [5], то, из-за правил приведения типов в js Number([5]) === 5, т.к. [5].toString() === '5', Number('5') === 5
}
arr
    .filter(value => isNumeric(value)) // получаем массив, где предикат isNumeric вернул true
    .reduce((agg, value) => agg + Number(value), 0); // складываем все значения отфильтрованного массива
// то же, что и выше только в "классическом" виде, отработает быстрее, т.к. мы один раз пройдемся по массиву, вместо двух
// код выше можно переписать, убрав filter и добавив проверку в callback функцию reduce для скорости
var agg = 0;
for(const value of arr) {
   if(isNumeric(value)) agg += Number(value);
}
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось EmperioAf, 10.07.2017 в 01:00.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.07.2017, 00:33
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.07.2017 
					
					
					
						Сообщений: 49
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 А можете объяснить пожалуйста как оно работает?) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.07.2017, 01:29
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.12.2016 
					
					
					
						Сообщений: 3,650
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		EmperioAf. можно еще быстрей и через тернарный без функции 
var arr = [1, 2, 3, 'a', 'b', 'c', '4', '5', '6'],
sum = arr.reduce((sum, el) => sum+(el=+el?+el:0));
alert(sum);
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.07.2017, 01:32
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.01.2015 
					
					
					
						Сообщений: 622
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		j0hnik,
  
Number.isFinite(+'Infinity' || 0) === false;
Number.isFinite(+Infinity || 0) === false;
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.07.2017, 01:42
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.12.2016 
					
					
					
						Сообщений: 3,650
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от EmperioAf
			 
		
	 | 
 
	
		j0hnik, 
 
Number.isFinite(+'Infinity' || 0) === false;
Number.isFinite(+Infinity || 0) === false;
 
	 | 
 
	
 
 Это лишнее  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.07.2017, 01:49
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.01.2015 
					
					
					
						Сообщений: 622
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Что лишние?  
Посчитайте своим способом массивы: 
[1, 2, 3, 'a', 'b', 'c', 'Infinity', -Infinity] 
[1, 2, 3, [4]] 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.07.2017, 01:57
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.12.2016 
					
					
					
						Сообщений: 3,650
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от EmperioAf
			 
		
	 | 
 
	
		Что лишние?  
Посчитайте своим способом массивы: 
[1, 2, 3, 'a', 'b', 'c', 'Infinity', -Infinity] 
[1, 2, 3, [4]]
	 | 
 
	
 
 [1, 2, 3, 'a', 'b', 'c', 'Infinity', -Infinity] // NaN 
[1, 2, 3, [4]] // 10
 
alert(-Infinity + Infinity);
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |