Javascript.RU

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

Проверка наличия в обьекте свойства, прочитанного из prompt
есть вот такая задача:

Создайте ассоциативный массив person, описывающий персону, с произвольным количеством произвольных полей. С помощью оператора in или typeof проверьте наличие в объекте свойства, прочитанного из prompt, и выведите его на экран. Если свойства нет, то добавляйте его в объект со значением, которое также запрашивается из prompt.

Ассоциативный массив создала:
var person={

name:"John",
age:"26",
salary:"1000$",
}

Не понимаю как сделать дальше. Помогите и обьясните
Ответить с цитированием
  #2 (permalink)  
Старый 09.07.2017, 23:45
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 09.07.2017, 23:55
Аспирант
Отправить личное сообщение для Tanya51 Посмотреть профиль Найти все сообщения от Tanya51
 
Регистрация: 09.07.2017
Сообщений: 49

спасибо)
Уже решила также))

Но есть другой вопрос,по другой задачке

Создайте смешанный массив, например [1, 2, 3, 'a', 'b', 'c', '4', '5', '6']. Посчитайте сумму всех его чисел, включая строковые числа, исключая буквы. Выведите сумму в alert.

как можно посчитать эти числа со строками,не учитиваю буквы?

Учу JS только 3-ю неделю. есть моменты,которые не доходят как сделать)
Ответить с цитированием
  #4 (permalink)  
Старый 10.07.2017, 00:28
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 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.
Ответить с цитированием
  #5 (permalink)  
Старый 10.07.2017, 00:33
Аспирант
Отправить личное сообщение для Tanya51 Посмотреть профиль Найти все сообщения от Tanya51
 
Регистрация: 09.07.2017
Сообщений: 49

А можете объяснить пожалуйста как оно работает?)
Ответить с цитированием
  #6 (permalink)  
Старый 10.07.2017, 01:29
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 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);
Ответить с цитированием
  #7 (permalink)  
Старый 10.07.2017, 01:32
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

j0hnik,
Number.isFinite(+'Infinity' || 0) === false;
Number.isFinite(+Infinity || 0) === false;
Ответить с цитированием
  #8 (permalink)  
Старый 10.07.2017, 01:42
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от EmperioAf Посмотреть сообщение
j0hnik,
Number.isFinite(+'Infinity' || 0) === false;
Number.isFinite(+Infinity || 0) === false;
Это лишнее
Ответить с цитированием
  #9 (permalink)  
Старый 10.07.2017, 01:49
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Что лишние?
Посчитайте своим способом массивы:
[1, 2, 3, 'a', 'b', 'c', 'Infinity', -Infinity]
[1, 2, 3, [4]]
Ответить с цитированием
  #10 (permalink)  
Старый 10.07.2017, 01:57
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 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);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка текущего значения свойства “right” из JS pepel266 Общие вопросы Javascript 4 15.09.2016 17:10
Проверка свойства стиля levshaszr Общие вопросы Javascript 9 13.11.2015 15:42
Проверка наличия текста в поле формы Glook jQuery 6 16.07.2010 19:46
проверка наличия строчки в текстовом файле a_lex jQuery 5 05.05.2010 22:58
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24