Rez*_*eza 4 javascript arrays ecmascript-6
我有一个像下面的数组
const data = [
{
name:'AAAA',
group: 'A',
age:10
},
{
name:'ABCD',
group: 'A',
age:10
},
{
name:'DJSHDJH',
group: 'B',
age:15
},
{
name:'FJHF',
group: 'B',
age:20
}
]
Run Code Online (Sandbox Code Playgroud)
我想找到不同的数据group,并age通过es6
预期结果
[
{
group: 'A',
age: 10
},
{
group: 'B',
age: 15
},
{
group: 'B',
age: 20
}
]
Run Code Online (Sandbox Code Playgroud)
我尝试过[... new Set(data.map(x => {x.group, g.age}))]但没有机会
我知道如何循环数据并找到唯一值,但我想使用es6函数
您可以使用Object.values()with reduce()返回值的数组作为结果.
const data = [{"name":"AAAA","group":"A","age":10},{"name":"ABCD","group":"A","age":10},{"name":"DJSHDJH","group":"B","age":15},{"name":"FJHF","group":"B","age":20}]
var result = Object.values(data.reduce((r, e) => (r[e.group + '|' + e.age] = {group: e.group, age: e.age}, r), {}))
console.log(result)Run Code Online (Sandbox Code Playgroud)
编写相同代码的另一种方法@Jeremy Thille是使用模板文字和属性值简写
const data = [{"name":"AAAA","group":"A","age":10},{"name":"ABCD","group":"A","age":10},{"name":"DJSHDJH","group":"B","age":15},{"name":"FJHF","group":"B","age":20}]
var result = Object.values(data.reduce(function(r, e) {
let group = e.group, age = e.age;
return r[`${group}|${age}`] = {group, age}, r
}, {}))
console.log(result)Run Code Online (Sandbox Code Playgroud)
您也可以按照建议使用ES6参数解构@gyre.
const data = [{"name":"AAAA","group":"A","age":10},{"name":"ABCD","group":"A","age":10},{"name":"DJSHDJH","group":"B","age":15},{"name":"FJHF","group":"B","age":20}]
var result = Object.values(data.reduce((r, {group, age}) => (r[group+'|'+age] = {group, age}, r), {}))
console.log(result)Run Code Online (Sandbox Code Playgroud)