我正在尝试遍历JSON文件中的一些数据并计算相同城市/发生的次数...
var json = [
{ "city": "California" },
{ "city": "California" },
{ "city": "California" },
{ "city": "Texas" },
{ "city": "Florida" }
];
var obj = {};
for (var i = 0, j = json.length; i < j; i++) {
if (obj[json[i]]) {
obj[json[i]]++;
}
else {
obj[json[i]] = 1;
}
}
console.log(obj);
Run Code Online (Sandbox Code Playgroud)
JSFiddle: http : //jsfiddle.net/f2939ucw/
问题在于返回的对象仅返回数组中对象的数量,而不返回相同次数的城市。
措辞的另一种方式:
json.reduce(function(sums,entry){
sums[entry.city] = (sums[entry.city] || 0) + 1;
return sums;
},{});
Run Code Online (Sandbox Code Playgroud)
Array.reduce()在数组的每个元素上调用一个回调,将上一个调用的返回作为下一个的第一个参数传递。({}最后的是初始值,传递给第一个调用)
因此,这正是您所做的事情-创建一个空对象,遍历数组,并在对象内部累积总计。它只是简洁地做。
| 归档时间: |
|
| 查看次数: |
4519 次 |
| 最近记录: |