Есть функция которая выдаёт цвет имени для пользователя:
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 в массиве и при наличии выдачу присвоеного значени?
var nameToFind = "Андрей";
var found = already.find(function(item) { return item[0] == nameToFind; })
if (found)
console.log(found[1]);
Поиск индекса подмассива по значению одного из его элементов (с известным индексом):
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;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей