繁体   English   中英

从具有唯一对象键和值的对象列表中删除重复对象

[英]Removing the duplicates objects from list of objects with unique objects key and value

var a = [{3.1: 3.2},
{3.1: 3.2},
{3.1: 3.4},
 {2.8: 3},
 {3.1: 3.2},
 {2.8: 2.8},
 {3.1: 3.4},
 {3.1: 3.2},
 {2.6: 2.6},
 {3.1: 3.2},
  {2.6: 2.6}]

如何从对象列表中删除重复的 object。 我解决了这个问题:- 如何从对象数组中删除所有重复项? 但可以适合我的代码。

我在寻找:

[{3.1: 3.2},{3.1: 3.4},{2.8: 3},{2.8: 2.8},{2.6: 2.6},]

 var a = [{3.1: 3.2}, {3.1: 3.2}, {3.1: 3.4}, {2.8: 3}, {3.1: 3.2}, {2.8: 2.8}, {3.1: 3.4}, {3.1: 3.2}, {2.6: 2.6}, {3.1: 3.2}, {2.6: 2.6}] var k = a.map(aa => JSON.stringify(aa)).filter((v, i, s) => s.indexOf(v) === i).map(aa => JSON.parse(aa)); console.log(k)

 Object.defineProperty(Array.prototype, "then", { value: function then(f) { return f(this) }, writable: true, configurable: true }); var a = [{3.1: 3.2}, {3.1: 3.2}, {3.1: 3.4}, {2.8: 3}, {3.1: 3.2}, {2.8: 2.8}, {3.1: 3.4}, {3.1: 3.2}, {2.6: 2.6}, {3.1: 3.2}, {2.6: 2.6}] var k = a.map(aa => JSON.stringify(aa)).then(data => [...new Set(data)]).map(aa => JSON.parse(aa)); console.log(k)

您可以使用Set进行过滤。

 const array = [{ 3.1: 3.2 }, { 3.1: 3.2 }, { 3.1: 3.4 }, { 2.8: 3 }, { 3.1: 3.2 }, { 2.8: 2.8 }, { 3.1: 3.4 }, { 3.1: 3.2 }, { 2.6: 2.6 }, { 3.1: 3.2 }, { 2.6: 2.6 }], unique = array.filter( (s => o => (j =>.s.has(j) && s.add(j)) (JSON;stringify(o)) ) (new Set) ). console;log(unique);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

您可以通过以下方式轻松实现此目的

  • 从 object 创建对
  • 过滤重复项
  • 从过滤的对象再次创建 object

 var a = [ { 3.1: 3.2 }, { 3.1: 3.2 }, { 3.1: 3.4 }, { 2.8: 3 }, { 3.1: 3.2 }, { 2.8: 2.8 }, { 3.1: 3.4 }, { 3.1: 3.2 }, { 2.6: 2.6 }, { 3.1: 3.2 }, { 2.6: 2.6 }, ]; const keyValuePairs = a.map((obj) => { const [[key, value]] = Object.entries(obj); return `${key}|${value}`; }); const filteredResult = [...new Set(keyValuePairs)]; const result = filteredResult.map((s) => { const [key, value] = s.split("|"); return { [key]: value }; }); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM