2015-09-16 2 views
-3

У меня есть объект, который представляет собой список координат:Как определить, содержит ли объект массив?

var O = {[1,1],[2,1],[3,2]}; 

Мне нужно, чтобы проверить объект для конкретных координат, таких как [1,1]. Как я могу сделать что-то вроде:

if(O.contains([1,1]))... 

?

+3

Ваш 'O' является недействительным. Это не объект вообще, поскольку он не имеет свойств. Похож на двумерный массив для меня и должен выглядеть как «[[1,1], [2,1], [3,2]]' –

+0

Ваш примерный код неверен несколькими способами, а именно: объектами являются в формате '{key: value, ...}', и проверки равенства работают только с простыми значениями. Для последнего есть библиотеки, которые предоставляют методы для проверки правильности равномерного/глубокого выравнивания объектов (массивы - это тип объекта), и было бы легко найти их. –

+0

вы можете просто согласовать координаты в массиве массивов в виде строки с использованием regexp или indexOf() – dandavis

ответ

0

Я предполагаю, что вы хотели бы сравнить вложенный массив.

function contains(array, search) { 
 
    return array.some(function (a) { 
 
     return a.length === search.length && a.every(function (aa, i) { 
 
      return aa === search[i]; 
 
     }); 
 
    }); 
 
} 
 
document.write(contains([[1, 1], [2, 1], [3, 2]], [1, 1]) + '<br>'); 
 
document.write(contains([[1, 1], [2, 1], [3, 2]], [1, 1, 1]) + '<br>'); 
 
document.write(contains([[1, 1], [2, 1], [3, 2]], [1, 5]) + '<br>');

Смежные вопросы