js присвоить значение

141
06 апреля 2018, 17:50

Есть функция которая выдаёт цвет имени для пользователя:

var Arr = ['Red', 'Purple', 'Yellow', 'Green', 'Blue'];
var already = [];
function random() {
    var RandomArr = Math.floor(Math.random() * Arr.length);
    var random = Arr[RandomArr];
    Arr.splice(Arr.indexOf(random), 1);
    if () {
        return ;
    } else {
        already.push([name,random]);
        return random;
    }
}

После выдачи значение записывается в массив already , как сделать проверку на наличии name в массиве и при наличии выдачу присвоеного значени?

Answer 1
var nameToFind = "Андрей";
var found = already.find(function(item) { return item[0] == nameToFind; })
if (found)
  console.log(found[1]);
Answer 2

Поиск индекса подмассива по значению одного из его элементов (с известным индексом):

let foundIdx; 
let found = array.some((sub, i) => (foundIdx = i, sub[searchIdx] === searchVal));

Если метод вернет в переменную found истину, то в foundIdx будет индекс найденного элемента array (индекс первого подмассива, у которого значение по индексу searchIdx строго равно searchVal).

В данном выражении, вместо some можно написать find - результат останется прежним (find() работает быстрее, и с большими массивами лучше использовать именно его). Я использовал some() просто во избежание визуальной каши из имен: "foundIdx, found, find".
Круглые скобки вокруг выражения коллбэка - это не ошибка: так определяем приоритет операций, чтобы выполнились оба выражения, и вернулся результат второго.


var colors = ['Red', 'Purple', 'Yellow', 'Green', 'Blue']; 
var already = []; 
 
function randomColorFor(name) { 
  const DEFAULT_COLOR = 'White';  
  let colorIdx, color;  
  name = name.toLowerCase();  
  if (!already.some((n, i) => (color = n[1], n[0] === name))) { 
    if (colors.length) { 
      colorIdx = Math.floor(Math.random() * colors.length);  
      color = colors[colorIdx];  
      colors.splice(colorIdx, 1);  
    } 
    else  
      color = DEFAULT_COLOR;  
  } 
  already.push([name, color]); 
  return color;  
} 
 
let names = ['Елена', 'Иван', 'Павел', 'Анна', 'Сергей', 'Ольга', 'Александр', 'ИВАН', 'анна'];  
let name, color;  
while (names.length) { 
  color = randomColorFor(name = names.shift());  
  document.body.innerHTML += `<span style="color: ${color}">${name}</span><br>`;  
} 
console.log('Белый по-умолчанию: назначается когда цветов не хватило.'); 
body { 
  padding: 0 4px;  
  background-color: #ccc;  
  font: 14px sans-serif;  
}

READ ALSO
Как не загружать js дважды?

Как не загружать js дважды?

Как предотвратить повторную загрузку файла с js? Например, на странице сайта Joomla несколько модулей с одинаковыми js-файламиМожно ли проверять,...

184
Js перемещение картинок в форме

Js перемещение картинок в форме

Всем Здравствуйте!Есть форма с картинками:

118
Как переписать конфиг webpack?

Как переписать конфиг webpack?

Взял готовую сборку и решил допилитьВот конфиг webpack

156
открытие нового окна - Window.open

открытие нового окна - Window.open

созрел вопрос как сделать чтобы пользователю открывался сайт

169