Есть функция которая выдаёт цвет имени для пользователя:
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;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как предотвратить повторную загрузку файла с js? Например, на странице сайта Joomla несколько модулей с одинаковыми js-файламиМожно ли проверять,...