const mapOptions = (options, values) => option.map(({ option }) => {
const usedValues = new Set();
return {
id: option.id,
name: option.name,
slug: option.slug,
values: values.reduce((acc, { id, value }) => {
if (id === option.id && !usedValues.has(value)) {
usedValues.add(value);
acc.push({ id, value });
}
return acc;
}, [])
};
});
console.log(mapOptions(options, option_values));
<select>
надо отдельно обработать значения.function show_input_info(inputSelector, elSelector) {
const input = document.querySelector(inputSelector);
const el = document.querySelector(elSelector);
input.addEventListener('input', () => {
if (input.tagName === 'SELECT') {
el.textContent = [...input.selectedOptions]
.map((option) => option.textContent.trim())
.join(', ');
} else {
el.textContent = input.value.trim();
}
});
}
- if (numberTest && emailTest && adressTest) {
+ if (numberTest() && emailTest() && adressTest()) {
isNaN(false) --> false
!isNaN(false) --> true
parseFloat(false) --> NaN
100 + NaN --> NaN
if( obj.hasOwnProperty(el) ) {
лишнее. document.querySelectorAll('.group').forEach((group) => {
const text = group.textContent.trim();
if (students.includes(text)) {
group.style.setProperty('background-color', '#AA0000');
}
if (prepods.includes(text)) {
group.style.setProperty('background-color', '#00FF00');
}
});
Object.fromEntries(new FormData(document.querySelector('form')).entries());
const arr1 = ['Андрей', 'Алексей', 'Сергей', 'Антон', 'Матвей', 'Роман', 'Руслан'];
const arr2 = [27, 22, 38, 45, 51, 42, 19];
const data = Object.fromEntries(
Array.from({ length: Math.min(arr1.length, arr2.length) }, (_, i) => [arr1[i], arr2[i]])
);
const zip = (...arrays) => {
const count = arrays.length;
return Array.from(
{ length: Math.min(...arrays.map((array) => array.length)) },
(_, i) => Array.from({ length: count }, (_, j) => arrays[j][i])
);
};
const arr1 = ['Андрей', 'Алексей', 'Сергей', 'Антон', 'Матвей', 'Роман', 'Руслан'];
const arr2 = [27, 22, 38, 45, 51, 42, 19];
const data = Object.fromEntries(zip(arr1, arr2));
const sortedData = Object.fromEntries(zip(arr1, arr2).sort((a, b) => a[1] - b[1]));
console.log(sortedData); // {Руслан: 19, Алексей: 22, Андрей: 27, Сергей: 38, Роман: 42,…}
obj
по литералу объекта. После того, как Вы заменили значение в obj
, оно будет существовать в WeakMap, т.к. объект, по которому было записано значение не был удален или перезаписан. Ну и получить значение по новому литералу объекта не выйдет, т.к. они не равны между собой (ссылаются на различные участки памяти).Ctrl+Shift+P
-> Collect garbage
.