2014-12-10 2 views
0

У меня есть следующий массив.Подсчет числа индексов массива Javascript

 "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

+5

Это не выглядит как массив. – alex

+1

'var count = 0; for (var key in obj) count + =/^ APP - /. test (key) '? – Bergi

+0

Он даже не похож на javascript. –

ответ

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-")); 
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. 
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); 
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>

1

Это выглядит как JSON, а не массив.

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

Один подход заключается в использовании .filter() на клавишах объекта:

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

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

Смежные вопросы