Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.03.2023, 23:59
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 155

Подобие индексированных массивов.
Всем привет!

В php при обработке результатов я использую массивы. Так как заранее неизвестно какие модули попадут в тест, то делаю типа так

Для правильного ответа
$arr[КодМодуля][0] += 1;
Для подсчета вопросов в модуле
$arr[КодМодуля][1] += 1;

То есть я знаю, что в 0 элементе хранятся правильные ответы, а в первом общее количество вопросов.

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

Как правильно в js делать такие задачи?

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2023, 00:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от 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))
Ответить с цитированием
  #3 (permalink)  
Старый 30.03.2023, 00:43
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 155

Сообщение от ksa Посмотреть сообщение
Возможно тебя устроят объекты...

[JS run]const o = {
'Модуль 1': [0, 0],
'Модуль 2': [0, 0],
'Модуль 3': [0, 0],
}
Модуль 1,2,3 можно задавать динамически или только при описании?

Хотя в любом случае объекты подходят. Спасибо.

Последний раз редактировалось savsoft, 30.03.2023 в 00:48.
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2023, 01:10
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 155

Сообщение от ksa Посмотреть сообщение
Возможно тебя устроят объекты...
o['Модуль 2'][0] += 1
Попробовал код модуля задавать так

const marr = [3441, 3442, 3443];

o[marr[0]][0] += 1

Вроде работает, но правильно ли так? Проблем не будет?

Последний раз редактировалось savsoft, 30.03.2023 в 01:28.
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2023, 10:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от savsoft
но правильно ли так?
Ты же вроде такое и хотел...

Сообщение от savsoft
Проблем не будет?
У объектов есть ограничение по ключам... Они будут "переделываться" в строки. Если твой "КодМодуля" это просто набор из цифр - проблем не будет.
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2023, 10:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от savsoft
Модуль 1,2,3 можно задавать динамически или только при описании?
"Модуль N" я написал только для примера...
Так же хотел показать что ключи это именно строки. Т.ч. вои циферки (коды) будут записаны как строки

const o = {
  '3441': [0, 0],
  '3442': [0, 0],
  '3443': [0, 0],
}
Ответить с цитированием
  #7 (permalink)  
Старый 30.03.2023, 12:37
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 155

Сообщение от ksa Посмотреть сообщение
Ты же вроде такое и хотел...


У объектов есть ограничение по ключам... Они будут "переделываться" в строки. Если твой "КодМодуля" это просто набор из цифр - проблем не будет.
Да, именно это я и спрашивал. Смутило, что ключ в кавычках. А я вставил просто цифровое значение из массива. Но если оно само "переделывается" в строки, и с цифрами проблем нет, то это именно то, что мне нужно. Попробовал, все работает.

Большое спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 30.03.2023, 14:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от savsoft
Смутило, что ключ в кавычках
Не всякая строка может быть использована без кавычек...
Например такое можно и без кавычек

const o = {
   test: [0, 0],
   test123: [0, 0],
   test_new: [0, 0],
   $test: [0, 0],
}
alert(JSON.stringify(o, null, 2))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить массив из двух исходных массивов IZUM Общие вопросы Javascript 9 04.10.2022 19:36
Создание из двух одномерных массивов один двумерный Artur_Hopf Общие вопросы Javascript 3 02.04.2018 13:05
Генератор многомерных массивов php, js vuler Ваши сайты и скрипты 2 11.01.2015 10:13
Вопросы от новичка по сортировке массивов и функциям iiv Ваши сайты и скрипты 3 01.07.2014 11:39
Пересечение и разность двух массивов harold Общие вопросы Javascript 9 18.12.2013 21:41