You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何过滤对象数组中重复键值对属性?Fetch返回结果处理求助

实现思路与代码示例

嘿,这个需求核心就是提取唯一的邮箱地址并重新构造成目标数组对吧?我给你两种实用的实现方式,你可以根据自己的场景来选:

方法1:利用Set自动去重(简洁直观)

Set是ES6里的特性,天生能帮我们去掉重复值,搭配map和扩展运算符就能快速实现需求:

const responseJson = [{id: 1, cust_email: "abcd@gmail.com"}, {id: 2, cust_email: "abcd@gmail.com"}, {id: 3, cust_email: "wxyz@gmail.com"}];

// 第一步:提取所有邮箱并去重,第二步:转成目标格式的对象数组
const uniqueEmails = [...new Set(responseJson.map(item => item.cust_email))].map(email => ({cust_email: email}));

console.log(uniqueEmails);
// 输出:[{cust_email: "abcd@gmail.com"}, {cust_email: "wxyz@gmail.com"}]

方法2:用对象跟踪已出现的邮箱(性能更优)

如果你的原数据量很大,一次遍历的方式性能会更好。我们用一个对象来记录已经处理过的邮箱,避免重复添加:

const responseJson = [{id: 1, cust_email: "abcd@gmail.com"}, {id: 2, cust_email: "abcd@gmail.com"}, {id: 3, cust_email: "wxyz@gmail.com"}];

const seenEmails = {};
const uniqueEmails = [];

for (const item of responseJson) {
  const email = item.cust_email;
  // 如果该邮箱还没被记录过,就添加到结果数组并标记
  if (!seenEmails[email]) {
    seenEmails[email] = true;
    uniqueEmails.push({cust_email: email});
  }
}

console.log(uniqueEmails);
// 同样得到目标结果

小提示:

  • 方法1代码更简洁,适合日常小体量数据的处理;
  • 方法2是O(n)时间复杂度,大数据量下效率更高。

内容的提问来源于stack exchange,提问作者Aravind Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 07:27:30