计算javascript对象中的出现次数
Count occurrences in javascript object
Object {green: 3, red: 2, blue: 1, yellow: 1, mint: 3}
我想循环遍历这个对象,并返回数组中出现次数最多(按值)的键。在这种情况下,它将像["mint", "green"]
一样是薄荷色和绿色的。
到目前为止,我得到了这个
for (var i = 0; i < key(obj).length; i++) {
... // no idea
}
感谢任何帮助或指导。非常感谢。
var obj = {"green": 3, "red": 2, "blue": 1, "yellow": 1, "mint": 3},
keys = Object.keys(obj), // get all keys as array
max = Math.max.apply(Math, keys.map(function(key) { return obj[key]; })), // find the biggest number of occurrences
result;
result = keys.filter(function(key) { // find the relevant keys
return obj[key] == max;
});
console.log(result);
您可以执行以下操作:
var someObjects = {
green: 3,
red: 2,
blue: 1,
yellow: 1,
mint: 3
};
function findOccurances(of, inn) {
var array = [];
for (var obj in inn) {
if (someObject[obj] == of) {
array.push(obj);
}
}
return array;
}
var data = {green: 3, red: 2, blue: 1, yellow: 1, mint: 3}
var maxProperty = null, maxValue = -1;
for (var prop in data) {
if (data.hasOwnProperty(prop)) {
var value = data[prop]
if (value > maxValue) {
maxProperty = prop
maxValue = value
}
}
}
您需要这个:
var maxValue = -10000000;
for(var prop in obj) {
if(!obj.hasOwnProperty(prop)) {
continue;
}
if(obj[prop] > maxValue) {
maxValue = obj[prop];
}
}
// show maxValue
注意:您需要obj.hasOwnProperty(prop)
,因为js中的对象有一些特殊的属性,而在循环中不需要这些属性。
编辑:我认为应该有一个更深思熟虑的解决方案。这里有一个:
var bar = { green: 3, red: 2, blue: 1, yellow: 1, mint: 3 };
var findMaxProperties = function (foo) {
var keys = Object.keys(foo);
var max = keys.map(function (key) {
return foo[key];
}).reduce(function (previous, current) {
return Math.max(previous, current);
});
return keys.filter(function (key) {
return foo[key] == max;
});
};
var result = findMaxProperties(bar);
$('#result').text(result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="result"></div>
如果我正确理解你的问题(如果是这样的话,那么你真的需要编辑它:),那么你想浏览一个对象,找到它具有最高数值的属性。如果是这样的话,那么一些类似的东西就会起作用。
var foo = { green: 3, red: 2, blue: 1, yellow: 1, mint: 3 };
var maxValue = Number.MIN_VALUE, maxValueProperties = [];
for (var key in foo) {
if(foo[key] == maxValue) {
maxValueProperties.push(key);
}
if(foo[key] > maxValue) {
maxValue = foo[key];
maxValueProperties = [];
maxValueProperties.push(key);
}
}
$('#result').text(maxValueProperties);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="result">result</div>
相关文章:
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 循环遍历以数组为值的Javascript对象
- 从ajax请求中获取javascript对象
- 如何从对象的原型方法访问JavaScript对象属性
- 将XML转换为普通的旧JavaScript对象
- 通过引用传递JavaScript对象
- javascript对象操作:根据指定条件选择属性
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何在异步函数中使用javascript对象
- 临时Javascript对象
- 如何在ASP中为用户控件添加Javascript对象网
- 使用数组向下搜索Javascript对象
- Rails将JavaScript对象存储到Model的有效方式
- JavaScript对象不是从原型链继承的
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- SetInterval在javascript对象中表现怪异
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 在 JavaScript 对象中设置要使用的运算符的属性
- 如何搜索JavaScript对象并更改值