bootd
@bootd
Гугли и ты откроешь врата знаний!

Как сделать поиск похожих объектов в массиве через $.inArray?

Как мне сравнить объекты через $.inArray? Вот мой код:
var 
				fieldsBlock = $('.block'),
				fieldsValueArr = [];

			fieldsBlock.each(function(index, el) {
				var 
					el = $(this),

					// Создадим объект с значением наших полей
					fieldsValue = {
						size: el.find('.fieldSize').val(),
						color: el.find('.fieldColor').val(),
						view: el.find('.fieldView').val()
					};

				if($.inArray(fieldsValue, fieldsValueArr) === -1){

					fieldsValueArr.push(fieldsValue);
					console.log('Одинаковых объектов нет');

				} else {

					console.log('Есть одинаковые объекты');
					
				}

			});


Но он не срабатывает, т.к. объекты сами по себе никогда не равны друг другу. Как можно решать проблему?
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
coderisimo
@coderisimo Куратор тега JavaScript
A если перебирать имеющиеся в массиве объекты и сравнивать с новым?
Для сравнения объектов в JS есть .is().
либо просто вот так :
var t = [{n:5,v:7} ,{n:4,v:8} ,{n:5,v:99}  ];
var opa = {n:4,v:8};
for (var e = 0 ; e<t.length; e++){
  if(  JSON.stringify(t[e])=== JSON.stringify(opa)){
  
  console.log(t[e]);
 
 }
  
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы