Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.03.2015, 17:15
Интересующийся
Отправить личное сообщение для Arx777 Посмотреть профиль Найти все сообщения от Arx777
 
Регистрация: 20.02.2015
Сообщений: 25

Поиск значения в двухмерном массиве
День добрый
Как реализовать поиск значения в двухмерном массиве?
Т. е. поиск в одномерном массиве работает корректно
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, 11.03.2015 в 17:45.
Ответить с цитированием
  #2 (permalink)  
Старый 11.03.2015, 17:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Arx777,
и какой результат вы хотите получить?
Ответить с цитированием
  #3 (permalink)  
Старый 11.03.2015, 18:00
Интересующийся
Отправить личное сообщение для Arx777 Посмотреть профиль Найти все сообщения от Arx777
 
Регистрация: 20.02.2015
Сообщений: 25

Найти в двухмерном/многомерном массиве значение или их отсутствие(-1), как и в обычном.
Фактически, мне нужно выполнить проверку на наличие элемента в двухмерном/многомерном массиве.
Ответить с цитированием
  #4 (permalink)  
Старый 11.03.2015, 18:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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));
Ответить с цитированием
  #5 (permalink)  
Старый 11.03.2015, 18:09
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от рони
а что циклом сами никак?
будет тебе. Человек игру пишет
Сообщение от Arx777
Pacman1
а ты ему про какую-то мелочь с циклами. Мысли глобально
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #6 (permalink)  
Старый 11.03.2015, 18:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>

Последний раз редактировалось рони, 11.03.2015 в 18:21.
Ответить с цитированием
  #7 (permalink)  
Старый 11.03.2015, 18:26
Интересующийся
Отправить личное сообщение для Arx777 Посмотреть профиль Найти все сообщения от Arx777
 
Регистрация: 20.02.2015
Сообщений: 25

рони,
И вправду выводит все. Спасибо огромное.)
Ответить с цитированием
  #8 (permalink)  
Старый 11.03.2015, 18:31
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от рони
ух ты работет !!!
Object.traverse was deprecated. Please, see RecursiveIterator / Рекурсивный итератор
=)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #9 (permalink)  
Старый 11.03.2015, 19:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от nerv_
Please, see
спасибо! но я бестолковый чтоб уметь воспользоваться тем что ты предложил.
Ответить с цитированием
  #10 (permalink)  
Старый 11.03.2015, 23:34
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

<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>


Так делать плохо но лень страшная штука =)

Последний раз редактировалось MallSerg, 11.03.2015 в 23:42.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в массиве Гугл-мен Общие вопросы Javascript 5 07.08.2013 14:22
Поиск объектов в массиве Lynatik Общие вопросы Javascript 24 22.06.2013 12:43
Поиск в массиве, частичное совпадение фонарик Общие вопросы Javascript 25 04.04.2013 07:43
Группировка в двухмерном массиве corbon Общие вопросы Javascript 9 01.07.2010 16:36
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31