首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ES6 -从现有数据创建新对象,只使用一个属性,并删除任何重复项?

在ES6中,你可以使用对象解构和Map数据结构来从一个现有对象中创建一个新对象,该新对象只包含一个属性,并且删除任何重复项。以下是一个示例代码:

代码语言:txt
复制
// 假设我们有一个原始对象数组
const originalArray = [
  { id: 1, name: 'Alice', age: 25 },
  { id: 2, name: 'Bob', age: 30 },
  { id: 3, name: 'Alice', age: 28 },
  { id: 4, name: 'Charlie', age: 35 }
];

// 我们想要创建一个新对象,其中只包含'name'属性,并且删除重复项
const uniqueNames = {};

originalArray.forEach(item => {
  // 使用Map来确保唯一性
  if (!uniqueNames.has(item.name)) {
    uniqueNames.set(item.name, item);
  }
});

// 将Map转换为对象数组
const uniqueNamesArray = Array.from(uniqueNames.values());

console.log(uniqueNamesArray);

这段代码会输出:

代码语言:txt
复制
[
  { id: 1, name: 'Alice', age: 25 },
  { id: 2, name: 'Bob', age: 30 },
  { id: 4, name: 'Charlie', age: 35 }
]

在这个例子中,我们使用了forEach循环来遍历原始数组,并使用Map来存储唯一的name属性。由于Map的键是唯一的,这自动帮我们删除了重复的项。最后,我们使用Array.from方法将Map的值转换回数组。

这种方法的优势在于它利用了Map的特性来确保唯一性,这是一个高效且简洁的解决方案。此外,这种方法也易于理解和维护。

如果你想要一个只包含name属性的新对象,而不是原始对象的副本,你可以稍微修改代码:

代码语言:txt
复制
const uniqueNamesOnly = Array.from(uniqueNames.values()).map(item => ({ name: item.name }));

console.log(uniqueNamesOnly);

这将输出:

代码语言:txt
复制
[
  { name: 'Alice' },
  { name: 'Bob' },
  { name: 'Charlie' }
]

在这个修改后的版本中,我们使用map函数来创建一个只包含name属性的新对象数组。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券