2016-11-30 61 views
1

我有一个对象“B”,这里面有它的许多对象,我想看看有多少特定的对象我有这里面的。我怎么能算重复对象的数量对象

对象“b”里面有:object k, object k, array cat

我想要做的就是返回对象“b”包含对象“k”的次数。这应该是2,因为这个对象有2个实例。我似乎无法得到长度。

我已经试过keys(b).length但总所有对象,包括不反对K退回。

例子:
b["k","k","property","cat"]

如何从上面的例子中得到总 “K” 的?

+0

你能不能给对象B的结构的为例。 – marcan2020

+0

ive在上面的例子中更新了 – sarah

+0

这个问题,“k”是一个字符串,而不是一个对象 – hackerrdave

回答

0

键(b).length返回数组的长度。你可以做的是循环键(b)和检查,如果K的外观和计数外观。

+0

可以请举例 – sarah

+0

我更新问题 – sarah

0

您可以通过数组元素循环和计数只匹配你在找什么它的那些元素。

比方说,你的阵列b看起来是这样的:

var b = ['k', 'k', 'property', 'cat']; 

你的函数返回一个字符串“K”只是数量会是这样:

function elementCount(arr, element) { 
    var count = 0; 
    var i; 

    for (i = 0; i < arr.length; i++) { 
    if (arr[i] === element) { 
     count++ 
    } 
    } 

    return count; 
} 

现在,您可以得到通过运行的“k”个元素的数量:

kCount = elementCount(b, 'k'); 

定义此功能的另一种方法是将u SE Array.prototype.reduce()

function elementCount(arr, element) { 
    return arr.reduce(function(prev, next) { 
    if (next === 'k') { 
     return prev + 1; 
    } else { 
     return prev; 
    } 
    }, 0); 
} 
+0

如果我有一个数组“b” - 这个数组b“k” k“,”property“,”cat“],我如何循环并找到”k“的数字? – sarah