计算Javascript数组索引的出现次数

时间:2014-12-10 04:57:33

标签: javascript arrays angularjs

我有以下数组。

       "APP-A": {
            "active": true
        },
        "APP-B": {
            "active": true
        },
        "APP-C": {
            "active": true
        },
        "BOOL-A": {
            "active": true
        },
        "BOOL-B": {
            "active": true
        },
        "BOOL-C": {
            "active": true
        },

我需要得到数组中APP - *的总数。 我试图在角度JS中实现。普通JS中的解决方案也会有所帮助。

TIA

6 个答案:

答案 0 :(得分:2)

一种方法是在对象的键上使用.filter()

var count = Object.keys(obj).filter(function (key) {
    return key.indexOf(prefix) === 0;
}).length;

http://jsfiddle.net/4m692usx/1/

答案 1 :(得分:1)

可以尝试这样:

var items = { "APP-A": {
        "active": true
    },
    "APP-B": {
        "active": true
    },
    "APP-C": {
        "active": true
    },
    "BOOL-A": {
        "active": true
    },
    "BOOL-B": {
        "active": true
    },
    "BOOL-C": {
        "active": true
    }
};
var c=0;
for(var item in items)
{
if(item.indexOf("APP-") >= 0)      
c++;
}
console.log(c);// your count here.

答案 2 :(得分:1)

选中此JSFiddle Link

但实际上它不是数组,它是 JSON对象。而我们正在计算的是JSON密钥。

JS部分:

var items = { "APP-A": {
            "active": true
        },
        "APP-B": {
            "active": true
        },
        "APP-C": {
            "active": true
        },
        "BOOL-A": {
            "active": true
        },
        "BOOL-B": {
            "active": true
        },
        "BOOL-C": {
            "active": true
        }
};

var app_count = 0;
for(var ik in items) {
    if(ik.indexOf("APP-") >= 0) {
        app_count++;
    }
}
alert(app_count);
console.log(app_count);

答案 3 :(得分:1)

var myArray = {
  "APP-A": {
    "active": true
  },
  "APP-B": {
    "active": true
  },
  "APP-C": {
    "active": true
  },
  "BOOL-A": {
    "active": true
  },
  "BOOL-B": {
    "active": true
  },
  "BOOL-C": {
    "active": true
  }
};

var reg = /^APP-/,
    count = 0, 
    name;

for (name in myArray) {
  count += reg.test(name);
}

document.getElementById('output').innerHTML = count;
<div id="output"></div>

答案 4 :(得分:1)

看起来像是一个json,而不是一个数组。

var count = 0;
for (var key in json) {
    key.indexOf('APP-')!==-1?count++,count;
}

答案 5 :(得分:0)

你可以这样做。

http://jsfiddle.net/098o3kch/1/

var items = { "APP-A": {
            "active": true
        },
        "APP-B": {
            "active": true
        },
        "APP-C": {
            "active": true
        },
        "BOOL-A": {
            "active": true
        },
        "BOOL-B": {
            "active": true
        },
        "BOOL-C": {
            "active": true
        }
};

function getCount(obj,pattern){
var cnt = 0;
 for(var item in obj)
{
if(item.indexOf(pattern) >= 0)  
cnt++;
}
return cnt;
 }

alert(getCount(items, "APP-"));