29.03.2023, 23:59
|
Профессор
|
|
Регистрация: 03.01.2019
Сообщений: 162
|
|
Подобие индексированных массивов.
Всем привет!
В php при обработке результатов я использую массивы. Так как заранее неизвестно какие модули попадут в тест, то делаю типа так
Для правильного ответа
$arr[КодМодуля][0] += 1;
Для подсчета вопросов в модуле
$arr[КодМодуля][1] += 1;
То есть я знаю, что в 0 элементе хранятся правильные ответы, а в первом общее количество вопросов.
Но в js я не могу задать свой индекс массива, а тупо гонять циклы и при совпадении КодМодуля считать выглядит не очень.
Как правильно в js делать такие задачи?
Спасибо
|
|
30.03.2023, 00:29
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от savsoft
|
Подобие индексированных массивов.
|
Возможно тебя устроят объекты...
const o = {
'Модуль 1': [0, 0],
'Модуль 2': [0, 0],
'Модуль 3': [0, 0],
}
o['Модуль 2'][0] += 1
// или так
++o['Модуль 2'][1]
alert(JSON.stringify(o, null, 2))
|
|
30.03.2023, 00:43
|
Профессор
|
|
Регистрация: 03.01.2019
Сообщений: 162
|
|
Сообщение от ksa
|
Возможно тебя устроят объекты...
[JS run]const o = {
'Модуль 1': [0, 0],
'Модуль 2': [0, 0],
'Модуль 3': [0, 0],
}
|
Модуль 1,2,3 можно задавать динамически или только при описании?
Хотя в любом случае объекты подходят. Спасибо.
Последний раз редактировалось savsoft, 30.03.2023 в 00:48.
|
|
30.03.2023, 01:10
|
Профессор
|
|
Регистрация: 03.01.2019
Сообщений: 162
|
|
Сообщение от ksa
|
Возможно тебя устроят объекты...
o['Модуль 2'][0] += 1
|
Попробовал код модуля задавать так
const marr = [3441, 3442, 3443];
o[marr[0]][0] += 1
Вроде работает, но правильно ли так? Проблем не будет?
Последний раз редактировалось savsoft, 30.03.2023 в 01:28.
|
|
30.03.2023, 10:48
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от savsoft
|
но правильно ли так?
|
Ты же вроде такое и хотел...
Сообщение от savsoft
|
Проблем не будет?
|
У объектов есть ограничение по ключам... Они будут "переделываться" в строки. Если твой "КодМодуля" это просто набор из цифр - проблем не будет.
|
|
30.03.2023, 10:51
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от savsoft
|
Модуль 1,2,3 можно задавать динамически или только при описании?
|
"Модуль N" я написал только для примера...
Так же хотел показать что ключи это именно строки. Т.ч. вои циферки (коды) будут записаны как строки
const o = {
'3441': [0, 0],
'3442': [0, 0],
'3443': [0, 0],
}
|
|
30.03.2023, 12:37
|
Профессор
|
|
Регистрация: 03.01.2019
Сообщений: 162
|
|
Сообщение от ksa
|
Ты же вроде такое и хотел...
У объектов есть ограничение по ключам... Они будут "переделываться" в строки. Если твой "КодМодуля" это просто набор из цифр - проблем не будет.
|
Да, именно это я и спрашивал. Смутило, что ключ в кавычках. А я вставил просто цифровое значение из массива. Но если оно само "переделывается" в строки, и с цифрами проблем нет, то это именно то, что мне нужно. Попробовал, все работает.
Большое спасибо!
|
|
30.03.2023, 14:26
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от savsoft
|
Смутило, что ключ в кавычках
|
Не всякая строка может быть использована без кавычек...
Например такое можно и без кавычек
const o = {
test: [0, 0],
test123: [0, 0],
test_new: [0, 0],
$test: [0, 0],
}
alert(JSON.stringify(o, null, 2))
|
|
|
|