如何获取重复对象键的长度

时间:2016-11-30 02:48:40

标签: javascript jquery html5 object

我想知道如何计算对象中重复键的数量。

我的目标是" a"我使用键(a)获得了这个对象的键

-i

我如何找到总次数" com"存在于上述?我应该得到2的长度。

提前致谢

2 个答案:

答案 0 :(得分:2)

不,JavaScript对象不能有重复的键。钥匙必须都是独一无二的。这个主题有一个很好的thread on Stack Overflow

如果假设你有可能的对象数组。使用另一个对象作为计数器,如此

var db = [
        {Id: "1" , Player: "Nugent",Position: "Defenders"},
        {Id: "2", Player: "Ryan",Position: "Forwards"},
        {Id: "3" ,Player: "Sam",Position: "Forwards"},
        {Id: "4", Player: "Bill",Position: "Midfielder"},
        {Id: "5" ,Player: "Dave",Position: "Forwards"},
        {Id: "6", Player: "Bill",Position: "Midfielder"}
]

var counter = {};
for (var i = 0; i < db.length; i += 1) {
    counter[db[i].Position] = (counter[db[i].Position] || 0) + 1;
}

for (var key in counter) {
    if (counter[key] > 1) {
        console.log("we have ", key, " duplicated ", counter[key], " times");
    }
}

答案 1 :(得分:1)

忽略一个对象不能有重复键(或假设你的keys()函数允许嵌套对象)的事实,并且只处理如何计算特定值出现的次数的问题一个数组,一个简单的方法就是使用array .filter() method,然后检查结果数组的.length

var keys = ["name", "key", "com", "com"];
var comCount = keys.filter(v => v === "com").length;
console.log(comCount); // 2

如果您需要支持那些不执行ES6箭头功能的旧浏览器:

keys.filter(function(v) { return v === "com"; }).length;

如果您需要执行此操作,请将其包装在自定义函数中:

function countValueInArray(val, arr) {
  return arr.filter(v => v === val).length;
}

var keys = ["name", "key", "com", "com"];

console.log(countValueInArray("com", keys));  // 2
console.log(countValueInArray("abc", keys));  // 0
console.log(countValueInArray("key", keys));  // 1

或者您可以手动编写for循环代码。或者使用.reduce()。等