Удаление объектов из массива по сравнению с другим массивом

#javascript #arrays #object

#javascript #массивы #объект

Вопрос:

У меня есть массив blackList, в котором я храню названия компаний из черного списка, теперь у меня есть массив результатов объектов со многими бизнесами, я хочу сохранить в массиве названия компаний, которые не включены в массив из черного списка, какой самый простой и производительный способ сделать это?

Действительно ли для этого нужен вложенный цикл?

 blackList = [ "Dominos Pizza", "Domino's Pizza", "McDonald's", "McDonalds",  "Telepizza", "Subway", "Burger King", "KFC", "Pansamp;Co", "Pansamp;Company" ,
        "Rodilla", "Rodilla Campamento", "Granier", "Llaollao" , "Taco Bell", "Wendy's", "Dunkin' Donuts", "Pizza Hut", "Papa John's Pizza", "Little Caesars",
        "Panera Bread", "Chipotle", "Papa Murphy's", "Hungry Howie", "Chipotle Mexican Grill", "Starbucks"],
        list = [ { name:'business 1' }, { name:'business 2' }, { name:'business 3' } ]
  

Ответ №1:

Самый простой способ сделать это — использовать filter и деструктурирование:

 const blackList = ["Dominos Pizza", "Domino's Pizza", "McDonald's", "McDonalds", "Telepizza", "Subway", "Burger King", "KFC", "Pansamp;Co", "Pansamp;Company",
  "Rodilla", "Rodilla Campamento", "Granier", "Llaollao", "Taco Bell", "Wendy's", "Dunkin' Donuts", "Pizza Hut", "Papa John's Pizza", "Little Caesars",
  "Panera Bread", "Chipotle", "Papa Murphy's", "Hungry Howie", "Chipotle Mexican Grill", "Starbucks"
];
const list = [{
  name: 'business 1'
}, {
  name: 'business 2'
}, {
  name: 'business 3'
}, {
  name: "Granier"
}];

const notOnBlacklist = list.filter(({ name }) => !blackList.includes(name));

console.log(notOnBlacklist);  
 .as-console-wrapper { max-height: 100% !important; top: auto; }  

Ответ №2:

Попробуйте

 let blackList = 
  {"Dominos Pizza":1, "Domino's Pizza":1, "McDonald's":1, "McDonalds":1
  ,"Telepizza":1, "Subway":1, "Burger King":1, "KFC":1, "Pansamp;Co":1
  ,"Pansamp;Company":1, "Rodilla":1, "Rodilla Campamento":1, "Granier":1
  ,"Llaollao":1, "Taco Bell":1, "Wendy's":1, "Dunkin' Donuts":1, "Pizza Hut":1
  ,"Papa John's Pizza":1, "Little Caesars":1, "Panera Bread":1, "Chipotle":1
  ,"Papa Murphy's":1, "Hungry Howie":1, "Chipotle Mexican Grill":1
  ,"Starbucks":1 };
        
let list = [];

addBusiness("'business 1'");
addBusiness("Domino's Pizza");
addBusiness("'business 2'");
addBusiness("Hungry Howie");
addBusiness("'business 3'");

console.log(list);

function addBusiness (name) {
  if (blackList.hasOwnProperty(name)) return;
  list.push({'name':name});
}