Поиск значения в двухмерном массиве
День добрый
Как реализовать поиск значения в двухмерном массиве? Т. е. поиск в одномерном массиве работает корректно function find(array, value) { return mazePacman1.indexOf(value) } var mazePacman1 = [ 1, 2, 3, 4, 5 ]; alert(find(mazePacman1, 2)); //1 А как реализовать подобное для двухмерного/многомерного массива? Ибо он выдает "-1"(т.е. не найдено) function find(array, value) { return mazePacman1.indexOf(value) } var mazePacman1 = [ [1, 2, 3, 4, 5], [2, 1, 4, 5, 5] ]; alert(find(mazePacman1, 2)); //-1 |
Arx777,
и какой результат вы хотите получить? |
Найти в двухмерном/многомерном массиве значение или их отсутствие(-1), как и в обычном.
Фактически, мне нужно выполнить проверку на наличие элемента в двухмерном/многомерном массиве. |
Arx777,
а что циклом сами никак? function find(array, value) { for (var i=0; i<array.length; i++) if (array[i].indexOf(value) != -1) {return [i,array[i].indexOf(value)] } return -1 } var mazePacman1 = [ [1, 2, 3, 4, 5], [2, 1, 4, 5, 5] ]; alert(find(mazePacman1, 2)); |
Цитата:
Цитата:
|
nerv_,
ух ты работет !!! <script> !function(a){"use strict";function b(a){return a instanceof Object}function c(a){return"number"==typeof a&&!h(a)}function d(a,c,d,e,f,h){var i=[[],0,g(a).sort(),a],j=[];do{var k=i.pop(),l=i.pop(),m=i.pop(),n=i.pop();for(j.push(k);l[0];){var o=l.shift(),p=k[o],q=n.concat(o),r=c.call(d,k,p,o,q,m);if(r!==!0){if(r===!1){i.length=0;break}if(!(m>=h)&&b(p)){if(-1!==j.indexOf(p)){if(f)continue;throw new Error("Circular reference")}if(!e){i.push(n,m,l,k),i.push(q,m+1,g(p).sort(),p);break}i.unshift(q,m+1,g(p).sort(),p)}}}}while(i[0])}function e(a,b,e,g,h,i){var j=b,k=e,l=1===g,m=!!h,n=c(i)?i:f;d(a,j,k,l,m,n)}var f=100,g=Object.keys,h=a.isNaN;Object.traverse=e}(window); var mazePacman1 = [ [1, 2, 3, 4, 5], [2, 1, 4, 5, 5] ]; Object.traverse(mazePacman1, function(node, value, key, path, depth) { if(value == 2) alert(path) }); </script> |
рони,
И вправду выводит все. Спасибо огромное.) |
Цитата:
=) |
Цитата:
|
<script> function find(array, value) { return (""+array).search(value); }; var mazePacman1 = [ [1, 2, 3, 4, 5], [2, 1, 4, 5, 5] ]; alert(find(mazePacman1, 2)); alert(find(mazePacman1, 5)); alert(find(mazePacman1, 9)); </script> Так делать плохо но лень страшная штука =) |
Часовой пояс GMT +3, время: 10:27. |