Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнить двумерный массив с одномерным (https://javascript.ru/forum/misc/60898-sravnit-dvumernyjj-massiv-s-odnomernym.html)

Dilettante_Pro 26.01.2016 18:50

laimas,
Ответ по сути задачи, похоже, в предыдущей теме этого топикстартера
http://javascript.ru/forum/misc/6089...mbinacijj.html

x1ds 26.01.2016 18:54

Поясню по другому

Мне нужно сделать тест из 5 вопросов, в каждом вопросе по 3-5 вариантов ответов

Вопрос 1
Что болит:
1.Нога value = 1
2.Рука value = 2
3.Голова value = 3
4.Живот value = 4
5.Нос value = 5

Вопрос 2
Симптомы:
1.Насморк value = 1
2.Кашель value = 2
3.Температура value = 3

Теперь условие при котором будет выводится определенный текст к примеру

Если на вопрос 1 ответили 2 или 4 а на второй ответили 1 то выводим "Вы больны гриппом"
1-2,4 2-1

laimas 26.01.2016 18:57

Цитата:

Сообщение от x1ds
Если сравнивать вот эти 2 то тогда true
Если к примеру изменить какой то элемент то тогда false

Переложив на гинекологию, получим - если двойня, папа в ступоре, если еще не определено, ожидаем. :)

У вас массив m2 содержит 5 элементов, и по стечению расположения звезд на небе и m1 также имеет 5 элементов. Вопрос - значит ли это, что в:

var m1 = [[1, 0, 0],[2, 3, 0],[1,2, 3],[1, 2, 5],[1, 3, 5]];
var m2 = [5,2,1,1,5];

если m2[0] есть среди значений m1[0] И m2[1] есть среди значений m1[1] И m2[2] есть среди значений m1[2] И m2[3] есть среди значений m1[3] И m2[4] есть среди значений m1[4], только в этом случае true?

Или как то иначе?

laimas 26.01.2016 19:00

Цитата:

Сообщение от x1ds
Поясню по другому
Мне нужно сделать тест из 5 вопросов, в каждом вопросе по 3-5 вариантов ответов

Вот я об этом и думал, а вы о болях пишите нормально, а массивами не можете передать условий.

Тогда вопрос - это что тест (проверить самого себя) или же это проверка знаний куратором своего ученика? Если первое, то это решать на клиенте, если второе, то эту проверку нужно делать уже только на сервере.

x1ds 26.01.2016 19:05

Попробую графически пояснить что где проверять



Вот только в этом случае true

laimas 26.01.2016 19:08

Цитата:

Сообщение от x1ds
Попробую графически пояснить что где проверять

Уже не надо, ибо это то, о чем я ранее спрашивал. Ответ дайте по поводу "что это", ибо тесты самого себя можно производить и на клиенте, а вот проверка кем-то знаний кого-то, это уже задача севера. Что у вас?

x1ds 26.01.2016 19:12

тесты самого себя

рони 26.01.2016 19:30

x1ds,
:lol: медитируйте
var m1 = [[1, 0, 0],[2, 3, 0],[1,2, 3],[1, 2, 5],[1, 3, 5]];
 var m2 = [5,2,1,1,5];
function fn(a, b) {
    return a.every(function(a, i) {
        return a.some(function(a) {
            return a == b[i]
        })
    })
};
alert(fn(m1,m2))
var m2 = [0,2,1,1,5];
alert(fn(m1,m2))
/*или так */
function foo(a, b) {
    return a.every(function(a, i) {
        return !!~a.indexOf(b[i])
    })
};
var m2 = [5,2,1,1,5];
alert(foo(m1,m2))
var m2 = [0,2,1,1,5];
alert(foo(m1,m2))

laimas 26.01.2016 19:38

Ну тогда узнать есть ли вхождение (булево значение) N-го индекса массива m2 в массиве m1[N-го индекса], например так:

!!~m1[N].indexOf(m2[N])


Но вот прочел: Если на вопрос 1 ответили 2 или 4 а на второй ответили 1 то выводим "Вы больны гриппом", и заболел расстройством. Во первых не знал, что если болит рука или живот, это грипп, а во-вторых не похоже что вам нужно true/false, а важно знать номер ответа. И еще, если m2, это номер варианта, который выбрал тестирующийся, то как понять - [1, 0, 0] и ответ 5?

x1ds 26.01.2016 20:20

Цитата:

Сообщение от рони (Сообщение 405131)
x1ds,
:lol: медитируйте
var m1 = [[1, 0, 0],[2, 3, 0],[1,2, 3],[1, 2, 5],[1, 3, 5]];
 var m2 = [5,2,1,1,5];
function fn(a, b) {
    return a.every(function(a, i) {
        return a.some(function(a) {
            return a == b[i]
        })
    })
};
alert(fn(m1,m2))
var m2 = [0,2,1,1,5];
alert(fn(m1,m2))
/*или так */
function foo(a, b) {
    return a.every(function(a, i) {
        return !!~a.indexOf(b[i])
    })
};
var m2 = [5,2,1,1,5];
alert(foo(m1,m2))
var m2 = [0,2,1,1,5];
alert(foo(m1,m2))

Спасибо огромное) То что нужно !


Часовой пояс GMT +3, время: 21:50.