如何在javascript对象中获得具有相似值的键的计数
How to get count of key having similar value in javascript object?
我需要实现这样的东西:
var data = [
{
tag:'A',
others:'Abc'
},
{
tag:'B',
others:'Bbc'
},
{
tag:'A',
others:'Acb'
}
]
我试图组标签属性具有相似的值。在给定的示例中,我需要将具有相似值的所有标记分组并将其放在另一个数组上。有没有办法得到像
这样的东西?var newArray = [{tag:A,count:2}, {tag:B,count:1}]
这就是为什么数组。减少存在:
var data = [
{
tag:'A',
others:'Abc'
},
{
tag:'B',
others:'Bbc'
},
{
tag:'A',
others:'Acb'
}
];
var tmp = data.reduce(function (result, item) {
result[item.tag] = ++result[item.tag] || 1;
return result;
}, {});
var count = [];
Object.keys(tmp).forEach(function(key) { count.push({ tag: key, count: tmp[key] }); });
console.log(count);
document.write(JSON.stringify(count, null, 4));
使用Lodash countBy方法,您可以执行如下操作:
var newArray = _.countBy(data, function(val) {
return val.tag;
});
输出如下:
{ 'A': 2, 'B': 1 }
不要忘记在项目中包含Lodash
我是从头开始写的!!下面是代码!结果数组就是你想要的…
<script>
var data= [
{
tag:'A',
others:'Abc'
},
{
tag:'B',
others:'Bbc'
},
{
tag:'A',
others:'Acb'
}
] ;
var tags=[];
var flag=0;
var result=[];
for(i=0;i<data.length;i++)
{
for(j=0;j<tags.length;j++) if(tags[j]==data[i].tag) flag=1;
if(flag==0) tags.push(data[i].tag);
}
for(k=0;k<tags.length;k++)
{
count=0;
for(m=0;m<data.length;m++)
{
if(data[m].tag==tags[k]) count++;
}
var obj={};
obj.tag=tags[k];
obj.count=count;
result.push(obj);
}
document.write(result[0].count);
</script>
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- Javascript,如何匹配和获取包含在两个数组中的相似对象
- JavaScript 和 C++ 是否太相似而无法同时学习?
- 基于编辑距离的javascript文本相似度百分比算法
- 用 JavaScript 计算两个数组之间的相似之处
- 如何在 Javascript 中按百分比使颜色与另一种颜色相似
- 用重复的相似行简化 javascript 函数(带有循环?
- 如何找到编号.JavaScript 中两个字符串中的相似字符
- 在javascript中比较不同实例的相似对象
- javascript或扩展java脚本中的可编辑和只读之间有什么相似之处和区别
- 获取javascript中id数组相似的所有元素
- Javascript:为HTML文档中所有相似元素的副本选择文本
- 如何在javascript对象中获得具有相似值的键的计数
- 哪个TypeScript/JavaScript单元测试框架的API与JUnit最相似
- 在JavaScript中组合相似的对象
- 用. preventdefault()合并两个相似的函数- javascript
- JavaScript:对具有相似属性的对象进行分组