我有一个像
这样的数组对象var array =
[
{"name":"Joe", "age":17},
{"name":"Carl", "age": 35},
{"name":"Joe", "age":17},
{"name":"Carl", "age":35},
{"name":"Mark", "age":21},
]
什么是从这个数组中获取唯一对象而不进行循环的最佳方法,在这种情况下输出需要
[
{"name":"Joe", "age":17},
{"name":"Carl", "age": 35},
{"name":"Mark", "age":21}
]
答案 0 :(得分:3)
new Array(...new Map(a.map(d=> [d.name, {name: d.name, age: d.age}]))).map(d=> d[1]);
答案 1 :(得分:2)
尝试使用lodash库和uniq方法:这也可以使用下划线。
_.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
// → [{ 'x': 1 }, { 'x': 2 }]
答案 2 :(得分:1)
使用开源项目jinqJs非常简单。
var array =
[
{"name":"Joe", "age":17},
{"name":"Carl", "age": 35},
{"name":"Joe", "age":17},
{"name":"Carl", "age":35},
{"name":"Mark", "age":21},
];
var result = jinqJs().from(array).distinct('name', 'age').select();
document.body.innerHTML += '<pre>' + JSON.stringify(result, null, 2) + '</pre><br><br>';
<script src="https://rawgit.com/fordth/jinqJs/master/jinqjs.js"></script>