Tri*_*ani 6 javascript arrays ecmascript-6 reactjs
我有一个像下面的对象数组:
var array =
[
{"name":"abc","age":20}
{"name":"abc","age":20}
{"name":"abc","age":20}
{"name":"xyz","age":21}
{"name":"xyz","age":21}
]
Run Code Online (Sandbox Code Playgroud)
我想计算不同值的出现次数,例如:
[3,2]
Run Code Online (Sandbox Code Playgroud)
假设abc有3次出现并且xyz有2次出现.
我正在这样做reactjs.我能够获得不同的值,比如[abc,xyz]使用这个答案.
ES6语法是首选.
tri*_*cot 14
你需要知道一个计数属于哪个名字,所以我建议你不要输出一个数组,它不会给你任何线索,而是一个由名字键入的对象,并带有相应计数值:
var result = array.reduce( (acc, o) => (acc[o.name] = (acc[o.name] || 0)+1, acc), {} );
Run Code Online (Sandbox Code Playgroud)
var array =
[
{"name":"abc","age":20},
{"name":"abc","age":20},
{"name":"abc","age":20},
{"name":"xyz","age":21},
{"name":"xyz","age":21}
];
var result = array.reduce( (acc, o) => (acc[o.name] = (acc[o.name] || 0)+1, acc), {} );
console.log(result);Run Code Online (Sandbox Code Playgroud)
映射/减少救援:
const frequency = array
.map(({ name }) => name)
.reduce((names, name) => {
const count = names[name] || 0;
names[name] = count + 1;
return names;
}, {});
// frequency: { abc: 3, xyz: 2 }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3986 次 |
| 最近记录: |