@bee2015

Как отфильтровать массив по объекту?

Добрый день! Подскажите пожалуйста как массив с объектами отфильтровать если есть объект, то есть, нужно удалить этот объект из массива.
Пример массива
var Object = [
    {it1: "Pro1", desc: "desc1", id: '17'},
{it1: "Pro2",  desc: "desc2",  id: '85'},
{it1: "Pro3", desc: "desc3",   id: '87'},
{it1: "Pro4",  desc: "desc4",  id: '41'},
];
Есть например обьект {it1: "Pro4",  desc: "desc4",  id: '41'},
  • Вопрос задан
  • 297 просмотров
Решения вопроса 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
function eqObj(obj1, obj2) {
  if(obj1 === obj2) return true;
  if(!obj1 || !obj2) return false;
  var keys1 = Object.getOwnPropertyNames(obj1);
  var keys2 = Object.getOwnPropertyNames(obj2);
  var len = keys1.length;
  if(len !== keys2.length) return false;
  while(len--) {
    var key = keys1[len];
    if(!Object.prototype.hasOwnProperty.call(obj2, key)) return false;
    if(typeof obj1[key] === 'object' && typeof obj2[key] === 'object' && !eqObj(obj1[key], obj2[key])) return false;
    if(obj1[key] !== obj2[key]) return false;
  }
  return true;
}

var objects = [
    {it1: "Pro1", desc: "desc1", id: '17'},
{it1: "Pro2",  desc: "desc2",  id: '85'},
{it1: "Pro3", desc: "desc3",   id: '87'},
{it1: "Pro4",  desc: "desc4",  id: '41'},
];
var result = objects.filter(function(obj) {
  return !eqObj(obj, {it1: "Pro4",  desc: "desc4",  id: '41'});
});
Ответ написан
romy4
@romy4
Exception handler
используя array.filter. просто возвращаете значения наоборот для не совпадающих true, а для своего объекта - false
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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