にプッシュ:Javascriptの反復配列、私は以下のコードを実装しようとしている各要素が表示された回数をカウントし、オブジェクト
var data = [];
var devicesObj = {};
var devices = clients.map(function(k) {
return k.os;
});
devices.sort();
var current = null;
var cnt = 0;
for (var i = 0; i <= devices.length; i++) {
if (devices[i] !== current) {
if (cnt > 0) {
devicesObj.label = current;
devicesObj.value = cnt;
}
data.push(devicesObj);
current = devices[i];
cnt = 1;
} else {
cnt++;
}
}
アイデアは、デバイスの配列を反復処理しようとすることです各要素の名前を取得し、配列内で繰り返される回数を数えます。次に、現在の要素名をキーラベルの下のオブジェクトに割り当て、合計で値のキーをカウントします。最後に新しいオブジェクトを新しい配列にプッシュします。私は次のような結果を得るコードを実行した後
{ _id: 58d095c272b61889a6688922,
id: 'k65f508',
os: 'Apple iPhone',
mac: 'f0:24:75' },
{ _id: 58d095c272b61889a6688923,
id: 'k00e8fc',
os: 'Android',
mac: '08:ec:a9' },
{ _id: 58d095c272b61889a6688924,
id: 'k65f637',
os: 'Android',
mac: 'c0:bd:d1' },
{ _id: 58d095c272b61889a6688925,
id: 'k00b0ec',
os: 'Windows',
mac: '74:e2:8c' },
{ _id: 58d095c272b61889a6688926,
id: 'k00328a',
os: 'Android',
mac: 'd0:87:e2' },
{ _id: 58d095c272b61889a6688927,
id: 'k0006b1',
os: 'Apple iPhone',
mac: '9c:d3:5b' }
:
デバイス変数にマップアレイの構造
[
{
"label": "Apple iPhone",
"value": 2
},
{
"label": "Apple iPhone",
"value": 2
},
{
"label": "Apple iPhone",
"value": 2
},
{
"label": "Apple iPhone",
"value": 2
},
{
"label": "Apple iPhone",
"value": 2
},
{
"label": "Apple iPhone",
"value": 2
}
]
を助けてください!
はそれがない@JLRisheが、それはいけない:私<= devices.length iがdevices.lengthを<する必要があり、最後のデバイスを追加する必要があります。 –
今よく見えます。 – JLRishe