Javascript迭代数组,计算每个元素出现的次数并将其推送到对象
我正在尝试实现以下代码:Javascript迭代数组,计算每个元素出现的次数并将其推送到对象,javascript,arrays,object,Javascript,Arrays,Object,我正在尝试实现以下代码: 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) {
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++;
}
}
执行代码后,我得到以下结果:
[
{
"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
}
]
请帮忙 你一次又一次地推同一个物体。试试这个:
for (var i = 0; i < devices.length; i++) {
if (devices[i] !== current) {
if (cnt > 0) {
data.push({label: current, value: cnt});
}
current = devices[i];
cnt = 0;
}
cnt++;
}
if (cnt > 0) {
data.push({label: current, value: cnt});
}
有许多问题。一是重用同一个对象,这就是为什么所有数组元素都具有相同的值 另一个原因是,循环中的逻辑有故障,无法正确解释数据的所有配置方式,并在不应该的情况下不断将值推送到数组中
还有一个问题是,你正在使用@JLRishe,它确实在使用,但它不应该使用:我现在看起来好多了。
for (var i = 0; i < devices.length; i++) {
if (devices[i] !== current) {
if (cnt > 0) {
data.push({label: current, value: cnt});
}
current = devices[i];
cnt = 0;
}
cnt++;
}
if (cnt > 0) {
data.push({label: current, value: cnt});
}