javascript - 从对象数组中过滤唯一值

标签 javascript

<分区>

如何使用 Array.filter() 返回唯一的 idname

我的场景与我研究过的解决方案略有不同,因为我有一个对象数组。我找到的每个示例都包含单个值的平面数组。

data=[
{id: 555, name: "Sales", person: "Jordan" },
{id: 555, name: "Sales", person: "Bob" },
{id: 555, name: "Sales", person: "John" },
{id: 777, name: "Accounts Payable", person: "Rhoda" },
{id: 777, name: "Accounts Payable", person: "Harry" },
{id: 888, name: "IT", person: "Joe" },
{id: 888, name: "IT", person: "Jake" },
];

var unique = data.filter(
function (x, i) {
   return data[i].id.indexOf(x.id) === i
});

提前致谢。

最佳答案

我认为forEach()更好地实现你正在寻找的东西:

var data=[
{id: 555, name: "Sales", person: "Jordan" },
{id: 555, name: "Sales", person: "Bob" },
{id: 555, name: "Sales", person: "John" },
{id: 777, name: "Accounts Payable", person: "Rhoda" },
{id: 777, name: "Accounts Payable", person: "Harry" },
{id: 888, name: "IT", person: "Joe" },
{id: 888, name: "IT", person: "Jake" },
];
var resArr = [];
data.forEach(function(item){
  var i = resArr.findIndex(x => x.name == item.name);
  if(i <= -1){
    resArr.push({id: item.id, name: item.name});
  }
});
console.log(resArr);

如果你真的想用filter()尝试以下方式:

var data=[
{id: 555, name: "Sales", person: "Jordan" },
{id: 555, name: "Sales", person: "Bob" },
{id: 555, name: "Sales", person: "John" },
{id: 777, name: "Accounts Payable", person: "Rhoda" },
{id: 777, name: "Accounts Payable", person: "Harry" },
{id: 888, name: "IT", person: "Joe" },
{id: 888, name: "IT", person: "Jake" },
];
var resArr = [];
data.filter(function(item){
  var i = resArr.findIndex(x => x.name == item.name);
  if(i <= -1){
    resArr.push({id: item.id, name: item.name});
  }
  return null;
});
console.log(resArr);

关于javascript - 从对象数组中过滤唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43374112/

相关文章:

javascript - 如何使用 XMLHttpRequest 将数据从客户端 Javascript 传递到 node.js?

javascript - 有没有办法检测溢出 y :auto has been triggered, 并因此创建弹出窗口?

javascript - 网站上的 JSON 提要显示

javascript - 获取元素相对于另一个元素的 offsetTop

Javascript CSV 导出逗号问题

JavaScript - 带有传递函数的 setInterval 无法识别全局变量

javascript - 关于我非常简单的购物车的 TDD/单元测试建议

javascript - 使用 javascript 正则表达式在大文本中查找首字母缩略词

javascript - 使用 Javascript/JQuery 以最大宽度居中 <div>

javascript - 如何在调整窗口大小时更改 img src?