Как достать строку из массива который является значением ключа объекта

317
15 декабря 2017, 04:47

// Программа поиска операторов мобильной связи Украины 
"use strict"; 
// Создаем объект с значениями ключей-массивами(коды операторов)  
var mobile = { 
  Kyivstar: ["039", "067", "068", "096", "097", "098"], 
  Vodafone: ["050", "066", "095", "099"], 
  Lifecell: ["063", "093"], 
  Intertelecom: ["094"], 
  PEOPLEnet: ["092"], 
  TriMob: ["091"] 
} 
// Запрашиваем у пользователя номер мобильного телефона 
var user = prompt("Введите номер мобильного телефона в формате: 000 1112233", ""); 
// Получаем доступ к первым 3-м индексам user 
var x = user.substr(0, 3); 
// Прогоняем в цикле все ключи 
for (var key in mobile) { 
  var arr = mobile[key]; 
  // Проходимся по всем массивам 
  var check = arr.forEach(function (item, i, arr) { 
    if (x === item) { 
      //Выводим пользователю результат 
      alert("Вас приветствует " + key); 
    }  
  });  
}

Задача была такая: Создать объект, который содержит названия и коды мобильных операторов. Пользователь вводит номер телефона и получает информацию о своем операторе.

Я не совсем уверен в правильности решения данной задачи. Вроде все работает, а правильно ли?

Answer 1

Вставил из старой проверки своей с сайта, может пригодится:

// Создаем объект с значениями ключей-массивами(коды операторов)  
var mobile = { 
  Kyivstar: ["039", "067", "068", "096", "097", "098"], 
  Vodafone: ["050", "066", "095", "099"], 
  Lifecell: ["063", "093"], 
  Intertelecom: ["094"], 
  PEOPLEnet: ["092"], 
  TriMob: ["091"] 
} 
// Запрашиваем у пользователя номер мобильного телефона 
var user = prompt("Введите номер мобильного телефона", ""); 
 
var x; 
var y = -1; 
user = getTelNums(user); 
 
switch (user.length) { 
  case 10: 
    y = 0; 
    break; 
  case 11: 
    y = 1; 
    break; 
  default: 
    alert('неверный формат'); 
    break; 
} 
 
if (y >= 0) { 
  // Получаем доступ к первым 3-м индексам user 
  var x = user.substr(y, 3); 
  // Прогоняем в цикле все ключи 
  var op = "Неизвестный оператор"; 
  for (var key in mobile) { 
    var arr = mobile[key]; 
    // Проходимся по всем массивам 
    var check = arr.forEach(function(item, i, arr) { 
      if (x === item) { 
        op = key; 
        return; 
      } 
    }); 
  } 
  //Выводим пользователю результат 
  alert('Вас приветствует '+op); 
} 
 
function getTelNums(telStr) { 
  var regexpNums = /\d/g; 
  var regexpTel = /^([7|8]{0,1}0\d{2})?\d{7}$/; 
  var resultTel = ""; 
  var checkNums = telStr.match(regexpNums); // из строки пользователя получаем массив цифр 
  if (checkNums) { 
    // если массив не пустой 
    // сделаем из него строку: 
    for (var j = 0; j < checkNums.length; j++) resultTel += checkNums[j]; 
    // проверим, телефон ли это: 
    if (!regexpTel.test(resultTel)) { 
      resultTel = ""; 
    } 
  } 
  return resultTel; 
}

READ ALSO
Webpack. Два разных loaders&#39;а для svg

Webpack. Два разных loaders'а для svg

Ситуация такая: для вставки svg изображений в код используется react-svg-loaderПоявилась задача использовать svg в стилях css, для этого необходимо обрабатывать...

271
Возникают предупреждения в связки postcss + cssnext + webpack

Возникают предупреждения в связки postcss + cssnext + webpack

Использую postcss + cssnext + webpack и при использовании нативный css propertys в консоли возникает предупреждение -

351
Создание таймера на php

Создание таймера на php

Пытаюсь в голове сложить механизм создания таймераЗадача: Пользователь создает таймер сроком на 3 дня 15 часов

258
Как лучше организовать таблицы?

Как лучше организовать таблицы?

Есть таблица с данными файлов (путь, оригинальное имя, дата создания и тп

255