用javascript中的另一个数组对象值替换重复的数组对象值

用javascript中的另一个数组对象值替换重复的数组对象值,javascript,arrays,Javascript,Arrays,在上面的数组中,您可以在第二个和第三个数组中找到lastname,它们有重复的值“yadav”,所以我想找到第二个重复的值(即umesh yadav),并将其替换为第一个名称,使jayant yadav保持唯一 到目前为止我使用的函数 var indianTeam = [{ firstName: "KL", lastName: "Rahul" }, { firstName: "Jayant", lastName: "Yadav" }

在上面的数组中,您可以在第二个和第三个数组中找到lastname,它们有重复的值“yadav”,所以我想找到第二个重复的值(即umesh yadav),并将其替换为第一个名称,使jayant yadav保持唯一

到目前为止我使用的函数

var indianTeam = [{
      firstName: "KL",
      lastName: "Rahul"
    }, {
      firstName: "Jayant",
      lastName: "Yadav"
    }, {
      firstName: "Umesh",
      lastName: "Yadav"
    }];
services.filterPlayers=function(){
变量i,j,临时数组=[];
对于(i=0;i
场景一:我过滤掉重复的yadav,并使用==条件符号将唯一值返回给临时值

场景二:只有yadav返回到带有!==状况

如何用firstname替换重复的yadav并将其推到临时数组中的相同位置


参考:

这为您提供了一个唯一的lastName数组:

services.filterPlayers = function() {

  var i,j,tempArray = [];  

  for (i = 0; i < indianTeam.length; i++) {
      tempArray.push(indianTeam[i].lastName);
  }

  tempArray = tempArray.filter(function(elem, pos){
    if (tempArray.indexOf(elem) !== pos) {
      return true;
    }     
  });

  return tempArray;
};
new Set(indianTeam.map(el=>el.lastName));
这将创建一个唯一的lastName、fallback firstName数组:

services.filterPlayers = function() {

  var i,j,tempArray = [];  

  for (i = 0; i < indianTeam.length; i++) {
      tempArray.push(indianTeam[i].lastName);
  }

  tempArray = tempArray.filter(function(elem, pos){
    if (tempArray.indexOf(elem) !== pos) {
      return true;
    }     
  });

  return tempArray;
};
new Set(indianTeam.map(el=>el.lastName));


您可以使用map函数,用返回的元素替换每个元素。代码检查元素是否是第一个找到的元素,如果是,则保留它,如果不是,则用第一个替换它。

您可以对
lastName
使用哈希表,并检查是否已设置。如果已设置,则采用
firstName
,否则采用
lastName

var indianTeam=[{firstName:“KL”,lastName:“Rahul”},{firstName:“Jayant”,lastName:“Yadav”},{firstName:“Umesh”,lastName:“Yadav”},{firstName:“jane”},{firstName:“joe”},
hash=Object.create(null),
结果=indianTeam.map(函数(a){
如果(!a.lastName | | hash[a.lastName]){
返回a.firstName;
}          
hash[a.lastName]=true;
返回a.lastName;
});

控制台日志(结果)替换?过滤器?独特的?你想要什么?我想要像['rahul','yadav','umesh']@Arun-oh这样的数组。现在我找到你了。更新了我的答案…@Arun,请将信息添加到问题中。谢谢Jonas w的回答,但它没有满足我的结果,因为在中运行了你的代码jsbin@arun这和你举的例子一样。顺便说一句,不要相信jsbin某物在那里被破坏了…哦,乔纳斯,但它有点难以理解。。Es6所有涉及:DJonas它可以工作,但与Nina相同,它在数组第一个值(使用lastname)之后用名字替换所有值@Arun您能给出一个非工作案例,输入->输出吗?您有未定义的值吗?当我在完整代码中运行时,只有第一个位置有姓氏,其他所有位置都有名字。从您的代码片段中,它应该显示为Rahul、Yadav、Umesh。。。只有umesh必须使用名字而不是其他名称。另外,我不知道哈希对象与结果数组的重复项比较如何?是否需要检查结果数组中的重复项?是的,当代码开始查找重复项时,它应该替换为它的名字。对不起,我想我没有明确说明目标