Сравнить двумерный массив с одномерным
Подскажите как сравнить 2 разных массива и выводить если совпадение имеется "как на примере" то выводить true
var m1 = [[1, 0, 0],[2, 3, 0],[1,2, 3],[1, 2, 5],[1, 3, 5]]; var m2 = [1,2,1,1,5]; либо может как то преобразовывать 1 мерный в 2 мерный |
x1ds,
:blink: интересно что вы спросили? |
У меня есть 2 массива, мне нужно сравнить их, и если к примеру первый элемент из массива m2, число 1, есть в первом элементе массива m1, то мы возвращаем true . Только мне нужно что бы это было для всех элементов, и если они все совпадут то true, если хоть 1 число не совпадет то false
var m1 = [[1, 0, 0],[2, 3, 0],[1,2, 3],[1, 2, 5],[1, 3, 5]]; var m2 = [1,2,1,1,5]; |
x1ds,
теплее ... но также ...ни |
x1ds, массив m2 заведомо не равен массиву m1[0] уже только потому, что у них разное количество элементов, и не важно при этом есть ли значения m2 среди значений m1[0]. Вы не равенство пытаетесь определить, а вхождения, так? Тогда нужно брать только уникальные значения из массива m2.
|
Цитата:
|
Ну и поясните - есть в первом элементе массива m1, то мы возвращаем true . Только мне нужно что бы это было для всех элементов.
Массив m1 имеет 5 элементов, значит есть в первом элементе массива m1 трактуем проверить вхождения значений m2 только первого элемента массива m1, то есть m1[0]. Или же нужно проверять также вхождения значений m2 и в остальных элементах m1, то есть - m1[1], m1[2], m1[3], .... (Только мне нужно что бы это было для всех элементов)? У вас случайно нет "глубинной связи" между ними? То есть m2[0], как то по логике какой-то задачи связан с m1[0], а m2[1] с m1[1] и т.д.? |
laimas,
:) что-то в массиве m2 уникальности никакой не вижу ... |
var m1 = [[1, 0, 0],[2, 3, 0],[1,2, 3],[1, 2, 5],[1, 3, 5]];
var m2 = [1,2,1,1,5]; Если сравнивать вот эти 2 то тогда true Если к примеру изменить какой то элемент то тогда false var m1 = [[1, 0, 0],[2, 3, 0],[1,2, 3],[1, 2, 5],[1, 3, 5]]; var m2 = [5,2,1,1,5]; |
Цитата:
|
laimas,
Ответ по сути задачи, похоже, в предыдущей теме этого топикстартера http://javascript.ru/forum/misc/6089...mbinacijj.html |
Поясню по другому
Мне нужно сделать тест из 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 |
Цитата:
У вас массив 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? Или как то иначе? |
Цитата:
Тогда вопрос - это что тест (проверить самого себя) или же это проверка знаний куратором своего ученика? Если первое, то это решать на клиенте, если второе, то эту проверку нужно делать уже только на сервере. |
Попробую графически пояснить что где проверять
![]() Вот только в этом случае true |
Цитата:
|
тесты самого себя
|
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)) |
Ну тогда узнать есть ли вхождение (булево значение) N-го индекса массива m2 в массиве m1[N-го индекса], например так:
!!~m1[N].indexOf(m2[N]) Но вот прочел: Если на вопрос 1 ответили 2 или 4 а на второй ответили 1 то выводим "Вы больны гриппом", и заболел расстройством. Во первых не знал, что если болит рука или живот, это грипп, а во-вторых не похоже что вам нужно true/false, а важно знать номер ответа. И еще, если m2, это номер варианта, который выбрал тестирующийся, то как понять - [1, 0, 0] и ответ 5? |
Цитата:
|
Часовой пояс GMT +3, время: 22:56. |