如何比较两个数组对象并从一个数组对象中删除匹配的对象

时间:2018-02-13 13:43:13

标签: javascript

我的代码情景是:

var Employees= [{name:"Ram",htno:1245},{name:"mohan",htno:1246},
{name:"madhu",htno:1247},{name:"ranga",htno:1248}]

var seletedEmployees= [{name:"mohan"},{name:"ranga"}];

var employeesdataAfterremoveSelected = [?];

6 个答案:

答案 0 :(得分:1)

您可以将选定的员工姓名存储在一个数组中,然后过滤Employees数组并检查员工的姓名是否在此数组中:



var employees= [{name:"Ram",htno:1245},{name:"mohan",htno:1246},{name:"madhu",htno:1247},{name:"ranga",htno:1248}]
var selectedEmployees= ["mohan","ranga"];
var result = employees.filter(emp => selectedEmployees.includes(emp.name));
console.log(result);




要以编程方式获取字符串数组而不是对象数组,可以使用map

var seletedEmployees= [{name:"mohan"},{name:"ranga"}].map(emp => emp.name);

答案 1 :(得分:1)

你可以试试这个:

var Employees = [{name:"Ram",htno:1245},{name:"mohan",htno:1246},
    {name:"madhu",htno:1247},{name:"ranga",htno:1248}] 

var seletedEmployees = [{name:"mohan"},{name:"ranga"}];

var employeesdataAfterremoveSelected = Employees.filter(name => {
  return (name.name !== seletedEmployees[0].name && name.name !== seletedEmployees[1].name)
}) 

console.log(employeesdataAfterremoveSelected)

答案 2 :(得分:1)

从上面给出的代码中我认为这可能有效

$.each(student, function(key, value){
   if(matchedvalues.indexOf(value.name) < 0)
     {
       employeesdataAfterremoveSelected.push(value.name);
     }
})

答案 3 :(得分:1)

这是一个单线,分解解释:

// Start by filtering the first array on a condition.
employeesdataAfterremoveSelected = Employees.filter(
  // Map the array of selected employees to only return the name
  e => seletedEmployees.map(_e => _e.name)
    // use the includes function to check if the name is in the array
    .includes(e.name)
);

在一行中:

employeesdataAfterremoveSelected = Employees.filter(e => seletedEmployees.map(_e => _e.name).includes(e.name));

答案 4 :(得分:1)

您可以使用过滤方法,如下所示(未测试)

var Employees = [{name:"Ram",htno:1245}, {name:"mohan",htno:1246}]

var SelectedEmployess = [{name:"Ram",htno:1245}]

// filter the items from the invalid list, out of the complete list
    var employeesdataAfterremoveSelected = Employees.filter((item.name) => {
    return !SelectedEmployess.has(item.name);
})

// get a Set of the distinct, valid items
var validItems = new Set(employeesdataAfterremoveSelected);

答案 5 :(得分:0)

var Employees = [{name:&#34; Ram&#34;,htno:1245},{name:&#34; mohan&#34;,htno:1246}, {名称:&#34;马杜&#34;,htno:1247},{名称:&#34;朗高&#34;,htno:1248}]

var seletedEmployees = [{name:&#34; mohan&#34;},{name:&#34; ranga&#34;}];

var employeesdataAfterremoveSelected = Employees.filter(function(val,index){console.log(val.name)   return!(seletedEmployees.map(function(e){return e.name;})。indexOf(val.name)); });